哈希变量语法如何在打字稿中起作用?

Dou*_*oug 33 typescript

......它在哪里记录?

我在这个地方看过这样的例子:

class MyThing {
  private _layers: { [id: string] : SimpleLayer } = {};
  ...
}
Run Code Online (Sandbox Code Playgroud)

......这很有用,这很棒,但语法让我感到困惑.

什么是'id'?为什么语法不仅仅是blah:{string:SimpleLayer},它不起作用.我还看到{[name:string]:Type}和{[index:string]:Type}.

我一直在寻找typescriptlang.org试图找到实际记录的位置,但我似乎根本找不到它.

JLR*_*she 38

http://blogs.msdn.com/b/typescript/archive/2013/01/24/interfaces-walkthrough.aspx

请参阅"描述可索引对象"部分.这称为索引签名.

语法是:

[Identifier: KeyType]: ValueType
Run Code Online (Sandbox Code Playgroud)

KeyType可以是stringnumber.

你可以声称它Identifier并不是真正需要的,因为它不会被任何地方使用,但我认为这是为了强制类/接口设计者指出哈希映射键应该代表什么(id,name,e-邮件地址等).这也提供了intellisense显示散列键名称的可能性(正如Visual Studio对其他语言所做的那样),尽管我不认为Typescript intellisense目前提供了这个.

  • 我已经多次回到这个答案,因为我总是忘记这个语法......但令我震惊的是,当我复制/粘贴你的解决方案时,我对大量错误感到困惑......我想要什么粘贴是 `{ [Identifier: KeyType]: ValueType }` (3认同)