1

试图让它编译:

interface ListInterface {
    getObject(index: number): Object;
    [index: number]: Object;
}

class List123 implements ListInterface {
    private list: Object[] = [1,2,3];
    getObject(index: number) { return this.list[index] }
    [index: number] { return this.getObject(index) }
}

但 tsc 正在发出:

[ ] 方法声明的类定义中出现意外的“[”。

Typescript Playground Link(取消注释 //? 我遇到的问题)

4

1 回答 1

5

一些类型注释用于定义 JavaScript 行为并且无法实现 - 索引器注释就是这样一个示例。

请参考codeplex 的相关讨论

对于问题中提供的代码示例,有一个部分解决方案,因为 JavaScript 对象自然支持索引器表示法。因此可以写:

interface ListInterface {
    getObject(index: number): Object;
}

class List123 implements ListInterface {

    getObject(index: number) { 
        return <Object> this[index] 
    }
}

var list  = new List123();
list[1] = "my object";

console.log(list[1]); // "my object"
console.log(list.getObject(1)); // "my object";
于 2013-02-10T13:14:25.297 回答