interface Question {
type: 1 | 2
}
const obj = { type: 1 };
let question: Question;
question = obj; // not work
错误是:
Type'{type:number; }”不可分配给“问题”类型。种类 属性“类型”不兼容。 类型'number'不能分配给类型'1 | 2'。
为什么?我将Question
用作React props类型检查器,但无法将obj
作为props传递给组件。
答案 0 :(得分:5)
这是由于类型扩展。在{ type: 1 }
中,type
被推断为number
,而不是常数1
。如果要防止这种情况发生,可以通过添加as const
将其定义为常量:
interface Question {
type: 1 | 2
}
const obj = { type: 1 as const }; // "as const" will prevent type widening here
let question: Question;
question = obj;