如何实现打字稿
问题描述:
阵列签名方法试图让这个编译:如何实现打字稿
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(取消注释//对我有问题?)
答
某些类型的注释是有定义的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";