Implement an indexible interface

前端 未结 1 433
礼貌的吻别
礼貌的吻别 2020-12-19 00:45

How would I implement an interface that is indexible:

interface fooInterface{
    // indexable
    [index:string]:number;
    [index:number]:number;                 


        
相关标签:
1条回答
  • 2020-12-19 01:21

    You don't ever implement it in the class definition, but only by addressing instance[index], so your fooInterface cannot be be used via implements on a TypeScript class, but can be used to describe the expected structure of an object, e,g. var foo: fooInterface = {};

    Describing an Indexable Object

    A common pattern in JavaScript is to use an object (e.g. {}) as way to map from a set of strings to a set of values. When those values are of the same type, you can use an interface to describe that indexing into an object always produces values of a certain type (in this case, Widget).

    interface WidgetMap {
        [name: string]: Widget;
    }
    
    var map: WidgetMap = {};
    map['gear'] = new GearWidget();
    var w = map['gear']; // w is inferred to type Widget
    

    Quote and Widget example taken from: http://blogs.msdn.com/b/typescript/archive/2013/01/24/interfaces-walkthrough.aspx

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