为什么我要使用数组类型而不是标准数组?

时间:2016-02-27 09:59:55

标签: arrays typescript

我正在学习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];

1 个答案:

答案 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;

希望这有帮助。