如何在typescript中实现数组签名方法

如何在typescript中实现数组签名方法,typescript,Typescript,试图将其编译: 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

试图将其编译:

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正在发射:

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) }
}
[]方法声明的类定义中出现意外的“[”


(针对我遇到的问题取消对//?的注释)

有些类型注释用于定义JavaScript行为,但无法实现-indexer注释就是这样一个例子

请参阅

对于问题中提供的代码示例,有一个部分解决方案,因为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";
接口列表接口{
getObject(索引:number):对象;
}
类List123实现ListInterface{
getObject(索引:number){
返回此[索引]
}
}
var list=newlist123();
列表[1]=“我的对象”;
console.log(列表[1]);/“我的对象”
console.log(list.getObject(1));/“我的对象”;

有些类型注释用于定义JavaScript行为,但无法实现-indexer注释就是这样一个例子

请参阅

对于问题中提供的代码示例,有一个部分解决方案,因为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";
接口列表接口{
getObject(索引:number):对象;
}
类List123实现ListInterface{
getObject(索引:number){
返回此[索引]
}
}
var list=newlist123();
列表[1]=“我的对象”;
console.log(列表[1]);/“我的对象”
console.log(list.getObject(1));/“我的对象”;