尝试将其编译:
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(针对我遇到的问题取消注释?
答案 0 :(得分:5)
某些类型的注释用于定义JavaScript行为并且无法实现 - 索引器注释就是这样一个示例。
请参阅related discussion on 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";