我在一个项目中发现了这个表达式:
export class MyComponent implements OnInit {
public field: { [key: number] : string } = something
...
}
,我不知道这意味着什么。谁能解释一下并给我参考,以便我可以学习这种类型的声明?
答案 0 :(得分:3)
{ [key: number] : string }
是匿名/内联类型声明,它转换为:
interface Anon {
[key: number]: string;
}
声明括号,该对象中任何未声明的附加属性的类型必须为number
类型,并且该类型的值必须为string
。
{ 1: "foo", 2: "bar" } // valid
{ "1": "foo", "2": "bar" } // invalid
答案 1 :(得分:3)
field
是一种对象类型(由于{}
),具有返回字符串的数字索引签名。这意味着分配给该字段的对象只能具有数字键,并且该对象中的值必须为string
let field: { [key: number]: string };
field = {
0: "A",
//"A": "A", // error key is not numeric
//0: 0, // error value is not a string
}
let a = field[0] //a is string
field = ["A", "B"] // arrays are valid as well
您可以详细了解here