Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型脚本索引获取/设置_Javascript_Arrays_Interface_Typescript - Fatal编程技术网

Javascript 类型脚本索引获取/设置

Javascript 类型脚本索引获取/设置,javascript,arrays,interface,typescript,Javascript,Arrays,Interface,Typescript,我正在实现Typescript数组接口。我想知道是否有可能为索引定义get/set。例如: class MyClass<T> implements Array<T> { [index: number] : T; // ... other methods } 类MyClass实现数组{ [索引:编号]:T; //…其他方法 } 是否有可能以以下方式书写: class MyClass<T> implements Array<T> {

我正在实现Typescript数组接口。我想知道是否有可能为索引定义get/set。例如:

class MyClass<T> implements Array<T> { 
  [index: number] : T; 

  // ... other methods
}
类MyClass实现数组{
[索引:编号]:T;
//…其他方法
}
是否有可能以以下方式书写:

class MyClass<T> implements Array<T> { 
  get [index: number] () : T { 
     // implementation 
  } 
  set [index: number] (value: T) : void { 
     // implementation 
  } 

  // ... other methods
}
类MyClass实现数组{
获取[索引:编号]():T{
//实施
} 
集合[索引:编号](值:T):无效{
//实施
} 
//…其他方法
}

否,在类上重载索引运算符;但是,您可以使用定义,但许多浏览器还不支持

另一种方法是在数组周围创建包装器,以强制人们使用这些方法,您可以在其中添加其他功能:

class MyContainer<T> { 
    private items: T[] = [];

    get(name: string): T { 
        // some additional functionality may go here
        return this.items[name];
    } 

    set(name: string, value: T) : void {
        // some additional functionality may go here
        this.items[name] = value;
        // or here
    }
}

const myContainer = new MyContainer<string>();
myContainer.set("key", "value");
console.log(myContainer.get("key")); // "value"
class MyContainer{
私人项目:T[]=[];
get(名称:string):T{
//这里可能会有一些附加功能
返回此。项[名称];
} 
集合(名称:字符串,值:T):无效{
//这里可能会有一些附加功能
此.items[名称]=值;
//还是在这里
}
}
const myContainer=新myContainer();
myContainer.set(“键”、“值”);
console.log(myContainer.get(“key”);//“价值”

我班上已经有了这种方法。我想可能有一个直接的方法。