哈希变量语法在打字稿中如何工作?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈希变量语法在打字稿中如何工作?相关的知识,希望对你有一定的参考价值。
...以及在哪里记录?
我在附近看到了这样的例子:
class MyThing {
private _layers: { [id: string] : SimpleLayer } = {};
...
}
...而且可行,这很好,但是语法令我感到困惑。
什么是'id'?为什么语法不仅是blah:{string:SimpleLayer}(不起作用)。我还看到了{[name:string]:Type}和{[index:string]:Type}。
我一直在寻找typescriptlang.org,试图找到它实际在哪里记录,但我似乎根本找不到。
TypeScript Walkthrough: Interfaces
请参见“描述可索引对象”部分。这称为index signature。
用于定义索引的语法是:
[Identifier: KeyType]: ValueType
[KeyType
可以是string
或number
。
您可以声称Identifier
并不是真正需要的,因为它没有在任何地方使用,但是我认为这是必需的,以便强制类/接口设计器指示哈希映射键应代表什么(一个id ,名称,电子邮件地址等)。这也提供了让intellisense显示哈希键名称的可能性(就像Visual Studio在其他语言中一样),尽管我认为Typescript intellisense当前不提供此功能。
关于您的语法为什么不那么简单的问题,特别是blah:{string:SimpleLayer}
之类的东西:
因为这将是模棱两可的。该语法已经存在并且具有以下含义:
var x: { string: SimpleLayer }
这声明了一个变量x
。 x
的类型具有一个名为string
的属性,该属性的类型为SimpleLayer
。如果我想使用x
,我会这样做:
x.string = new SimpleLayer;
如果我们使用一个真实的例子,那就更明显了:
var circle: {radius: number}
这声明了一个具有radius
类型的属性(number
)的变量,它没有声明了将radius
类型映射为number
类型的哈希。
以上是关于哈希变量语法在打字稿中如何工作?的主要内容,如果未能解决你的问题,请参考以下文章