TypeScript, 索引签名 Index Signatures

索引签名(Index Signatures)是 TypeScript 中一种用于描述对象或类可以通过索引(类似于数组索引或对象属性名)访问的成员的方式。索引签名允许你定义对象或类的索引类型以及对应索引的值类型。

以下是一个使用索引签名的例子:

// 使用索引签名定义字符串索引类型和对应值的类型
interface StringDictionary {
  [key: string]: string;
}

// 使用索引签名定义数字索引类型和对应值的类型
interface NumberDictionary {
  [index: number]: number;
}

// 使用索引签名定义混合索引类型和对应值的类型
interface MixedDictionary {
  [key: string]: string | number;
}

// 使用索引签名定义类的索引类型和对应值的类型
class MyArray {
  [index: number]: string;

  constructor() {
    // 实现类的索引签名
  }
}

在上述例子中:

  • StringDictionary 接口使用字符串索引签名,表示对象的属性名是字符串,对应的值是字符串类型。
  • NumberDictionary 接口使用数字索引签名,表示对象的属性名是数字,对应的值是数字类型。
  • MixedDictionary 接口使用混合索引签名,表示对象的属性名可以是字符串或数字,对应的值是字符串或数字类型。
  • MyArray 类使用数字索引签名,表示该类实例可以通过数字索引来访问元素,对应的值是字符串类型。

限制

  • 索引签名只能为字符串或数字: TypeScript 中的索引签名只支持字符串类型和数字类型。

  • 数字索引的返回值类型必须是字符串索引返回值类型的子类型: 如果同时存在字符串索引和数字索引,那么数字索引的返回值类型必须是字符串索引返回值类型的子类型,因为在 JavaScript 中,数字索引会被转换为字符串。

interface Dictionary {
  [index: number]: string;
  length: number; // Error: 数字索引返回值类型必须是字符串索引返回值类型的子类型
}

索引签名为 TypeScript 提供了一种动态的、灵活的访问对象成员的方式,特别适用于那些具有动态属性的对象或类的描述。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值