有一个API(d3.map
具体),它实现了方法size
。但是我想扩展它以使它保持向后兼容,但它也可以用作值访问器/获取器(因为它是现在在ES6
中指定的方式):
var map = d3.map();
map.set(0, 1);
console.log(map.size()); // Old code, should still work
xhr.send(JSON.stringify(map.size)); // Should also work (as a getter)
这可能吗?
答案 0 :(得分:1)
没有办法做你喜欢的事。
唯一的出路是将size()
替换为getSize()
class Map{
public get size(){
return 1;
}
public set size(size:number){
}
getSize():number{
return 1;
}
}
有一种解决方案。只需使用密钥长度来获取新功能,并使用密钥大小来实现向后兼容。它看起来像C#List
类。
class Map {
private count = 0;
public get length(): number {
return this.count;
}
public set length(length: number) {
this.count = length;
}
public size(): number;
public size(size: number): void;
public size(size?: number): any {
if (size) {
this.count = size;
} else {
return this.count;
}
}
}
你的例子
var map = d3.map();
map.set(0, 1);
console.log(map.size()); // Old code, should still work
xhr.send(JSON.stringify(map.length)); // Should also work (as a getter)