我刚刚在TypeScript
中偶然发现了以下语法export interface OrderPool {
[id: string]: Level3Order;
}
有人可以澄清我在看什么吗?
我能理解的最好是这是一个接口OrderPool
,它包含一个名为Id string(array?)
的属性,类型为Level3Order
????
Level3Order
与属性Id的关系是什么,Id是数组还是单个实例?
答案 0 :(得分:5)
表示实现OrderPool接口的对象包含键/值对,其中键(在本例中称为id)的类型为string,值为Level3Order
例如,此对象正确实现了接口:
{
'item1': new Level3Order,
'anotherItem': new Level3Order
}
你也可能有像
这样的东西export interface OrderPool {
[id: number]: Level3Order;
}
示例:
{
1: new Level3Order(),
5: new Level3Order()
}
答案 1 :(得分:1)
简单来说意味着什么,"如果你索引 OrderPool 类型的东西,你会得到类型为 Level3Order 的东西。"
签名的类型应始终为字符串或数字。参数的名称(" id")并不重要。
请看下面的示例以获得完整的想法。
class Level3Order{
public dummy : number = 0;
}
export interface OrderPool {
[id :string]: Level3Order;
}
let pool : OrderPool ={}
pool["test"] = 5; //Error number is not assignable to Level3Order
pool["test"] = new Level3Order(); //Ok
pool["whatever"] = new Level3Order(); //Ok
pool.whatever = new Level3Order(); //Still ok
pool["test"].dummy = 5; // Dummy is a property on Level3Order, Ok