在打字稿中键入注释[重复]

Posted

技术标签:

【中文标题】在打字稿中键入注释[重复]【英文标题】:Type annotations in typescript [duplicate] 【发布时间】:2021-12-15 13:47:27 【问题描述】:
interface Test 
   name: string;
   age: number;


const subjectObj = 
   name: "Harhsit Singh",
   age: 17,
   height: "6'1",
;

const testObj: Test = subjectObj; //? NO ERROR

const testObj2: Test = 
   name: "Harhsit Singh",
   age: 17,
   height: "6'1", //! ERROR
;

我创建了一个如图所示的interface test,以及一个名为subjectObj 的测试对象,它包含的属性比test 包含的类型要多。

现在我已将我的 subjectObj 分配给 test 类型的常量 testObj,然后声明另一个具有相同类型 test 的常量 testObj2 并为其分配相同的对象, 但这次使用与 subjectObj 结构相同的新对象对其进行初始化。

但是现在它给了我一个错误 'height' does not exist in type 'test',但是当我通过 subjectObj 作为对 testObj 的引用时没有给出任何错误,尽管它也包含属性高度

我不知道为什么会这样,所以需要一些详细的解释。

【问题讨论】:

【参考方案1】:

Excess property checking 仅在您传递对象字面量时发生——当您传递类型时,您会遇到这样一个事实,即 TS 从不检查 确切类型,并假定具有过多类型的对象是你的意思是。

这真的是由于 TS 嵌入其中的 JS 文化。否则,在 TS 中针对 JS 接口编写代码真的很困难。

【讨论】:

以上是关于在打字稿中键入注释[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿中使用中间件键入 redux thunk

在打字稿中以自引用方式键入对象

在打字稿中的基于 Vue 类的组件中键入 prop

在打字稿中检查 NAN [重复]

在打字稿中连接两个对象[重复]

打字稿中的剂量[索引:字符串]是啥意思[重复]