在解构原始类型后对部分类型进行解构时,Typescript不会给出错误

时间:2019-03-28 18:42:18

标签: javascript typescript types interface

鉴于这种情况:

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的值未定义。

1 个答案:

答案 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