打字稿代码无法编译。
编译器输出: 错误TS2416:不能将类型“ Vector2”中的属性“ deepcopy”分配给基本类型“ Vector”中的相同属性。
我昨天才开始使用打字稿,这似乎是一个小问题,但似乎找不到解决该问题的合适方法。
interface Vector {
deepcopy() : this;
}
export class Vector2 implements Vector {
constructor() {
}
deepcopy() {
return new Vector2();
}
}
有什么建议或线索吗?
答案 0 :(得分:1)
interface Vector {
deepcopy() : Vector;
}
export class Vector2 implements Vector {
constructor() {
}
deepcopy() {
return new Vector2();
}
}
您的代码存在的问题是this
不是类型。结果,Vector2
与之不匹配。通过将其更改为Vector
,您可以根据需要返回实现Vector接口的实例。
答案 1 :(得分:0)
我不确定这是否可以在您的特定情况下使用,但也许尝试使用LeftTable.Column = INVERSE_FUNCTION(value)
代替:
abstract class
将正确键入以下内容:
export abstract class Vector {
deepcopy(): this {
return { ...this };
}
}
export class Vector2 extends Vector {
constructor() {
super();
}
/* custom copy logic if necessary
deepcopy(): this {
...
}
*/
}