我有一个纯JavaScript对象(我们称之为O)来自某个库,其接口位于环境名称空间中,例如:
declare namespace N {
interface IO {
// properties...
}
}
我需要创建一个TypeScript类,它将扩展此JavaScript对象。扩展它的机制是由库提供的,所以我不能使用本机TS继承,但是我需要访问这个JS对象的所有属性,我正在扩展它。我尝试声明一个实现此接口并扩展它的类:
declare class DummyO implements N.IO {
// copy-paste everything from N.IO
}
class MyRealClass extends DummyO {
}
现在我可以访问所有属性,但也有两个问题:
所以问题是 - 如何解决它?如何创建一个TS类,它有效地扩展了这个本机对象?或许还有另一种方法可以说服TS我真的继承O而没有那么麻烦?
答案 0 :(得分:-1)
我所知道的唯一可行的解决方案是将接口复制粘贴到类中:
declare namespace N {
interface IO {
// example properties:
a: number;
f(): number;
}
}
class MyRealClass implements N.IO {
// copy IO
a: number;
f: () => number;
// add "real" members later...
}
它不是很漂亮,但这是你在图书馆中使用自定义继承解决方案所获得的。