如何允许分配不兼容的Typescript类型



我正在服务器和前端之间共享类型定义。它们是在一个单独的npm包中定义的,两者都安装。在前端,持有ObjectId的变量需要这样键入,但在客户端,我可以假设它们总是基元字符串。

我在客户端上有很多地方会抛出:

Type 'ObjectId' is not assignable to type 'string'.

处理这个错误最简单的方法是什么?我可以告诉Typescript在客户端接受对ObjectId的字符串分配,反之亦然吗?我应该尝试覆盖ObjectId的Mongoose定义吗?

我正在考虑一种的覆盖

declare global {
export interface MyInterface1 {
variableWithObjectId1: string
}
export interface MyInterface2 {
variableWithObjectId2: string
}
}

我认为这应该有效。这是一个类似问题的建议解决方案,但我还没有做到这一点。

我希望在将库导入客户端时,有某种方法可以将ObjectId全局转换为字符串。

ObjectId和String根本不是相同的类型,因此不能简单地从一个类型分配到另一个类型。

您需要执行正确的转换。

对于客户端上的每一个错误,我都将类型转换为类似的字符串

var stringId = (myVariable as unknown) as string

我希望有比这更干净的方法,所以如果有人有建议,我会洗耳恭听。

最新更新