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

我是打字稿的新手,只是一个关于语法的问题,我看到了一些代码,比如定义这样的传递参数:

{ [property: string]: any}

我在这里有点困惑,我明白这个参数必须是一个对象并且它的属性必须是字符串。但我实际上可以将“财产”命名为任何随机名称,例如:

{ [SomeNonSenseName: string]: any}

它仍然以与以前完全相同的方式工作,因此属性名称实际上并不重要,我们不会引用此属性名称,这是打字稿的弱设计吗?


一只名叫tom的猫
浏览 155回答 2
2回答

哔哔one

语法{ [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']) 

梦里花落0921

所以属性名称实际上并不重要,我们不会引用这个属性名称正确,但是它确实强制索引的属性键是字符串类型。您也可以明确定义其他属性值得注意的一件事是,此名称可用于文档目的,例如,如果您有一个值的参数字典,您可能会这样做 { [argName: string]: string }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript