How does the hash variable syntax work in typescript?

后端 未结 2 1452
时光取名叫无心
时光取名叫无心 2020-12-09 15:13

...and where is it documented?

I\'ve seen examples like this around the place:

class MyThing {
  private _layers: { [id: string] : SimpleLayer } = {         


        
相关标签:
2条回答
  • 2020-12-09 15:17

    Regarding your question of why the syntax isn't simpler, specifically something like blah:{string:SimpleLayer}:

    Because this would be ambiguous. This syntax already exists and has meaning:

    var x: { string: SimpleLayer }
    

    This declares a variable x. The type of x has one property, named string, which is of type SimpleLayer. If I wanted to use x, I would do this:

    x.string = new SimpleLayer;
    

    It's more obvious if we use a real example:

    var circle: {radius: number}
    

    This declares a variable with one property (radius) that is of type number, it does not declare a hash mapping radius types to number types.

    0 讨论(0)
  • 2020-12-09 15:20

    TypeScript Walkthrough: Interfaces

    See the section "Describing an Indexable Object". This is called an index signature.

    The syntax for defining the index is:

    [Identifier: KeyType]: ValueType
    

    KeyType can be either string or number.

    You could claim that the Identifier isn't really needed since it doesn't get used anywhere, but I think it's required in order to force the class/interface designer to indicate what the hash map key should represent (an id, name, e-mail address, etc.). This also provides the possibility of having intellisense show the hash key name (as Visual Studio does for other languages), though I don't think Typescript intellisense currently provides this.

    0 讨论(0)
提交回复
热议问题