2013-02-12 33 views
17

当前是否可以在TypeScript中的类上实现索引器?在TypeScript中的类中实现索引器

class MyCollection { 
    [name: string]: MyType;  
} 

这不能编译。当然,我可以在接口上指定一个索引器,但是我需要这种类型的方法以及索引器,所以一个接口是不够的。

谢谢。

+1

否:请参阅http://typescript.codeplex.com/discussions/398379和http://stackoverflow.com/questions/14791550/how-to-implement-array-signature-method-in-typescript以及 – MiMo 2013-02-12 22:06:06

回答

23

你不能用索引器实现一个类。您可以创建一个接口,但该接口不能由类实现。它可以在普通的JavaScript来实现,并且可以指定功能以及接口上的索引:

class MyType { 
    constructor(public someVal: string) { 

    } 
} 

interface MyCollection { 
    [name: string]: MyType; 
} 

var collection: MyCollection = {}; 

collection['First'] = new MyType('Val'); 
collection['Second'] = new MyType('Another'); 

var a = collection['First']; 

alert(a.someVal); 
5

这是一个老问题,对于谁寻找答案:现在它可以定义索引属性像:

var lookup : {[key:string]:AnyType};

关键的签名必须是字符串或整数看到:

Interfaces on www.typescriptlang.org