Rez*_*eza 8 typescript typescript-typings
我有一个对象,它具有title字符串和order数字,然后会有动态数量的数字类型的属性
所以我试着像下面这样定义它
appraisalGroups: Array<{
title: string,
order: number,
[key:string]: number,
}>;
Run Code Online (Sandbox Code Playgroud)
稍后这将像这样分配(这只是我的读取应用程序中的一个示例,将有一个循环,并且密钥来自其余 api)
this.appraisalGroups[0]['mykey1'] = 5
Run Code Online (Sandbox Code Playgroud)
我得到了 ts 错误
“字符串”类型的属性“标题”不可分配给字符串索引类型“数字”
我的问题是如何输入?
你得到这个是因为索引签名强制所有属性匹配它们的返回类型。如 Typescript 文档所述:https ://www.typescriptlang.org/docs/handbook/interfaces.html
虽然字符串索引签名是描述字典模式的一种强大方式,但它们也强制所有属性匹配它们的返回类型。
索引签名明确表示“每当此对象使用此类型的值进行索引时,它将返回该类型的值”。
在您的示例中,您的索引签名表示“每当使用字符串索引此对象时,它将返回一个数字”。但是,编译器发现此规则可能会被破坏,因为您的属性之一不是数字,因此会引发错误。
我不确定你的问题空间是什么,但如果动态属性都有一些共同点,那么创建一个接口来抽象它们的共同点可能会更容易。您如何使用所述界面实际上取决于您想要做什么。
编辑:你也可以厚脸皮,走捷径,简单地使用联合类型。所以,而不是[key:string]: number你做[key:string]: number | string。
| 归档时间: |
|
| 查看次数: |
6760 次 |
| 最近记录: |