类型 '{ status: string; }' 不可分配给类型"MyType"。属性'status'的类型不兼容。类型 'string' 不可分配给类型



我有一个.ts文件,我想使用以下类型定义:

type MyType = {
status: "ACTIVE" | "INACTIVE"
}

当我将这种类型用于我直接设置值的变量时,一切都很好:

const myObj1: MyType = {
status: "ACTIVE"
}

但如果我使用一个变量来设置值,我会得到一个错误:

const data = {
status: "ACTIVE"
}
const myObj2: MyType = data

错误:

Type '{ status: string; }' is not assignable to type 'MyType'.
Types of property 'status' are incompatible.
Type 'string' is not assignable to type '"ACTIVE" | "INACTIVE"'.

你可以在这里试用

我尝试了不同的选项(比如这样(,但问题是我的类型是从Json Schema生成的,我无法编辑生成的文件。

这是因为data中的status被推断为string,而MyType期望它是"ACTIVE""INACTIVE"。您只需要使用as const断言

type MyType = {
status: "ACTIVE" | "INACTIVE"
}

const myObj1: MyType = {
status: "ACTIVE"
}

const data = {
status: "ACTIVE"
} as const
const myObj2: MyType = data

或者您可以使用TS 4.9 中提供的新satisfies关键字

type MyType = {
status: "ACTIVE" | "INACTIVE"
}
const myObj1: MyType = {
status: "ACTIVE"
}
const data = {
status: "ACTIVE"
} satisfies MyType

游乐场

相关内容

最新更新