鉴于这种情况:
interface TEST {
somename: string;
somenum: number;
}
const partialTest: Partial<TEST> = {
somename: '',
somenum: undefined,
}
const test: TEST = {
somename: '',
somenum: 1,
}
const destructured: TEST = {
...test,
...partialTest,
}
console.log(destructured);
为什么打字稿不给我一个错误,说明destructured
的{{1}}属性未定义?
somenum
有效显示console.log
的值未定义。
答案 0 :(得分:3)
这很有趣。如果让typescript推断类型,则可以正常工作:
const partialTest = {
somename: '',
somenum: undefined
};
const destructured: TEST = { // error
...test,
...partialTest,
};
这是因为将undefined
扩展到string
会导致undefined
不适合TEST,而将string | undefined
扩展到string
则会导致string
,适合进行测试。
除非没有missing
类型来区分undefined
和“未定义”,否则此wont fix