我正在尝试d.ts为API 编写一个文件,该文件的集合对象表示键值对的有序集合.键和值都是字符串.因此,行为是:
thing["foo"] 返回键为"foo"的对的字符串值thing[1] 返回有序集合中第二对的字符串值thing.length 将键值对的计数作为数字返回我尝试了以下,但它产生了错误"An index signature parameter must be type 'string' or 'number':
declare class FrobCollection {
[index: string|number] : string;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在TypeScript中正确建模此对象的行为?
编辑:我找到了一种方法来模拟两个索引器,但仍然无法使该length属性工作.
- thing ["foo"]返回键为"foo"的对的字符串值
- thing [1]返回有序集合中第二对的字符串值
- thing.length将键值对的计数作为数字返回
问题是第一颗子弹并不适用于所有的值"foo".例如,thing["0"]是一个字符串,但是thing["length"]是一个数字,对于任意字符串,x您实际上无法预测其类型thing[x]
这种类型的准确定义是:
declare class HeaderCollection {
length: number;
[index: number]: string;
[key: string]: number|string;
}
Run Code Online (Sandbox Code Playgroud)
它是给调用者,以确保它们实际上是由不与一些保留名称,如匹配的值索引length,或者说实际上是一个数字的字符串.
| 归档时间: |
|
| 查看次数: |
3244 次 |
| 最近记录: |