TS 的 索引签名使用

13 min read

在TypeScript中,索引签名(index signature)可以用来定义对象的属性名和属性值的类型。索引签名使用中括号([])来定义属性名的类型,并且需要和对象的属性名一致。

下面是一个使用索引签名的示例:

interface MyObject {
  [key: string]: number; // 索引签名,属性名是字符串,属性值是数字
}

const myObject: MyObject = {
  a: 1,
  b: 2,
};

console.log(myObject.a); // 1
console.log(myObject.b); // 2
console.log(myObject.c); // undefined

在上面的示例中,我们定义了一个MyObject接口,其中[key: string]表示属性名是字符串类型,: number表示属性值是数字类型。然后,我们创建了一个myObject对象,它的属性名可以是任意的字符串,属性值必须是数字。我们可以通过.运算符来访问对象的属性,例如myObject.a表示访问属性名为a的属性值。

需要注意的是,索引签名允许对象拥有额外的属性。也就是说,可以添加除了索引签名定义的属性之外的其他属性。例如,我们可以给myObject对象添加一个属性c,但是需要保证该属性值是数字类型。

希望以上解答能对你有帮助!如有任何疑问,请继续追问。