我正在学习TypeScript。我遇到了关于数组类型的文档,其中曾经可以将接口声明为:
interface INumberList {
[index: number]: number
}
// then use it
let numbers: INumberList = [1, 2, 3];
所以我的问题是,当我可以使用常规数组或类型化数组时,上述数组类型的优点是什么:
// regular arrays
let numbers: number[] = [1, 2, 3];
// or
let numbers: Array<number> = [1, 2, 3];
答案 0 :(得分:2)
在您的样本中,使用此类界面没有任何优势。实际上,您将数组对象的可用属性和方法缩小到只有一个索引器。
我为上述接口找到的常见用法是定义类似对象的“地图”。例如:
/**
* String key to any value map
*/
export interface INameValueMap<T>
{
[key: string]: T;
}
然后在你的代码的某个地方:
private m_changedRequisites: INameValueMap<boolean>;
在这里,你可以很好地输入你的地图:
this.m_changedRequisites = {};
//...
this.m_changedRequisites["someRequisiteName"] = true;
希望这有帮助。