为了账号安全,请及时绑定邮箱和手机立即绑定

将“属性”命名为对象形状中的任何随机名称

将“属性”命名为对象形状中的任何随机名称

一只名叫tom的猫 2021-12-02 19:44:08
我是打字稿的新手,只是一个关于语法的问题,我看到了一些代码,比如定义这样的传递参数:{ [property: string]: any}我在这里有点困惑,我明白这个参数必须是一个对象并且它的属性必须是字符串。但我实际上可以将“财产”命名为任何随机名称,例如:{ [SomeNonSenseName: string]: any}它仍然以与以前完全相同的方式工作,因此属性名称实际上并不重要,我们不会引用此属性名称,这是打字稿的弱设计吗?
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

语法{ [property: string]: any}定义了可索引类型


我们还可以描述我们可以“索引到”的类型,例如 a[10] 或 ageMap["daniel"]。可索引类型有一个索引签名,它描述了我们可以用来索引对象的类型,以及索引时相应的返回类型。


支持的索引签名有两种类型:字符串和数字。


在您的情况下,这意味着您有一个可以具有一组属性的对象,并且每个属性都是any类型的。


property您使用的词是索引器签名的一部分,而不是预期属性的名称。


let user: { [property: string]: any}  = { name: 'John', age: 30};

console.log(user['name']) 

console.log(user['age']) 

user['city'] = 'NY'

console.log(user['city']) 


查看完整回答
反对 回复 2021-12-02
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

所以属性名称实际上并不重要,我们不会引用这个属性名称

正确,但是它确实强制索引的属性键是字符串类型。您也可以明确定义其他属性

值得注意的一件事是,此名称可用于文档目的,例如,如果您有一个值的参数字典,您可能会这样做 { [argName: string]: string }


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信