【发布时间】:2016-10-29 21:44:47
【问题描述】:
不重复
这不是重复的问题,因为这里我的问题是索引签名而不是对象文字或类型注释。请仔细阅读我的问题。
几天后我开始学习 TypeScript。当我到达主题鸭打字时。我对它的一些基本规则感到困惑。
概述
在下面的代码中,我已经完全理解了。这就是我们使用鸭式打字的原因。
//Object declaration & initialization
let obj1 : {id:number, name:string};
obj1 = {id: 1,name: "Ahmer Ali Ahsan"};
//Error, missing property name
obj1 = {id:1};
let obj2 : {id:number, [obj2: string]:any};
obj2 = {id: 1, firstname: "Ahmer"};
//We add new property members due to index signatures
obj2 = {id: 2, firstname: "Ahmer", middlename:"Ali", lastname: "Ahsan"};
//We erase property members due to index signatures
obj2 = {id:2};
问题
我有一个问题,如果 TypeScript 是一种类型安全语言。然后在下面的代码中,我的所有参数类型都是数字,索引签名类型也是数字。
let obj3 : {id:number, [obj3: number]: number};
obj3 = {id: 1, rollno: "Why error is not showing here?"};
问题
当我将rollno 分配给字符串值时,为什么[obj: number]: number 索引签名没有错误?
请简要说明您的答案。如果我对索引签名的概念还不清楚。
【问题讨论】:
-
@Sheepy 这不是一个重复的问题,因为我不考虑类型注释或对象文字。我的问题与索引签名有关。请仔细准备我的问题和完整的细节。谢谢
标签: typescript