打字稿类型推断,传播语法和多种类型返回

时间:2017-09-13 18:46:14

标签: typescript type-inference spread-syntax

SkillProperty

如何更改{{1}}界面以使其符合空对象和我的实际SkillProperty类型?

1 个答案:

答案 0 :(得分:0)

您的SkillProperty界面 实际上与{} | {ice: number}兼容:

let noSkills = {}
let iceSkills = { ice: 321 };
let randomSkills: {} | {ice: number} = (Math.random() < 0.5) ? noSkills : iceSkills
let maybeSkills: SkillProperty = randomSkills; // no error

所以,这看起来像是TypeScript中的一个错误。类似的issuefixed,但this case似乎仍然存在。打开一个与现有问题相关的新问题可能是值得的。

同时还有解决方法,例如:

skills = {
  ...skills, // ok
  ...{}, // ok
  ...extraSkills() as SkillProperty // okay now
}

希望有所帮助;祝你好运!