typescript索引类型_TypeScript 索引类型

索引类型查询操作符 keyof 可以获取操作数的可访问索引字符串字面量类型。

代码实例如下:[typescript] 纯文本查看 复制代码interface Antzone{

webName:string;

age:number;

address:string;

}

let type:keyof Antzone;

返回值是已存在的公共属性名构成的字符串联合类型,截图如下:

c82ff952c33b1c974d419bb5a1895fbd.png

这时候,字符串索引就形成字符串字面量类型,并且这些字面量类型组合成一个联合类型。

关于字符串字面量类型可以参阅TypeScript 字符串字面量类型一章节。

使用索引类型,编译器就可以检查使用动态属性名的代码。

代码实例如下:[typescript] 纯文本查看 复制代码function func(obj, names) {

return names.map(name =>obj[name]);

}

上面代码可以返回对象属性子集的属性值数组。

在TypeScript通过索引类型查询和索引访问操作符实现类似功能。

代码如下:[typescript] 纯文本查看 复制代码interface Antzone{

webName:string;

age:number;

address:string;

}

function func(obj: T, names: K[]): T[K][] {

return names.map(name => obj[name]);

}

let antzone: Antzone = {

webName: '蚂蚁部落',

age: 5,

address:"青岛市南区"

};

let strings = func(antzone, ['webName','age']);

使用keyof T可以动态获取索引类型,也就是如果接口新增一个属性,它会实时获取。

于是可以很方便的检查是否传递了正确的属性名给函数。

代码实例如下:[typescript] 纯文本查看 复制代码let strings = func(antzone, ['webName','target']);

代码报错,因为并没有target属性;实现此判定利用了泛型限定,具体参阅TypeScript 泛型限定一章节。

函数的返回值类型是T[K]类型数组,关于T[K]索引访问操作符参阅TypeScript keyof 用法一章节后半部分。

看如下代码实例,以加深对T[K]的理解:[typescript] 纯文本查看 复制代码interface Antzone{

webName:string;

age:number;

address:string;

}

let antzone: Antzone = {

webName: '蚂蚁部落',

age: 5,

address:"青岛市南区"

};

type tp=Antzone["webName"];

let webName=antzone["webName"];

上面代码中,T是接口Antzone,K是字符串索引,如"webNmae",返回值是对应属性的数据类型,也就是antzone对象的webName属性值的数据类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值