javascript - 当我在解构原始类型后解构 Partial 类型时,Typescript 不会给出错误

标签 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);

为什么 typescript 没有给我一个错误,说 destructedsomenum 属性未定义?

console.log 有效地显示 somenum 的值未定义。

最佳答案

这很有趣。如果你让 typescript 推断类型,它就能正常工作:

const partialTest = {
  somename: '',
  somenum: undefined
};

const destructured: TEST = { // error
  ...test,
  ...partialTest, 
};

这是因为在 string 上传播 undefined 会导致 undefined 不适合 TEST,而传播 string | undefined 覆盖 string 会产生 string,适合 TEST。

除非没有缺失类型来区分未定义和“未定义”,否则 wont fix

关于javascript - 当我在解构原始类型后解构 Partial 类型时,Typescript 不会给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55404779/

相关文章:

javascript - 检查时空对象返回 false

javascript - react.js typescript spread(...) 仅添加最后一个元素

c++ - 数据类型的评估不同

file - 保存数据结构的类型信息

斯卡拉 : Does variable type inference affect performance?

javascript - 从简单的 Backbone 到 Marionette

javascript - 如何将 tocify 与 asciidoctor 一起用于动态目录?

javascript - 如何解析 ajax 返回的字符串的 JSON 列表?

javascript - Angular/Typescript/Firestore - 如何在 if 语句中返回可观察值

angular - "this"不能用于 typescript 函数 (Angular)