在我的 TypeScript 程序中,我想扩展一个在库中声明的类。诀窍是图书馆不会“导出”它,所以我不能直接访问它。相反,它提供了一个构建器函数,如下所示:
export namespace Library {
class BaseUnexported { // no export here, for some reason
public foo() { console.log("foo"); }
}
export function buildUnexportedInstance(): BaseUnexported {
return new BaseUnexported();
}
}
我正在尝试像这样扩展类:
import { Library } from "./library";
export default class Derived extends Library.BaseUnexported {
public bar() { console.log("bar"); }
}
如果库“导出”了类定义,这将起作用;但如果没有导出,我会收到错误 TS2339:“typeof Library”类型上不存在属性“BaseUnexported”。
我试图从构造函数中获取类型,例如:
type BaseType = ReturnType<typeof Library.buildUnexportedInstance>
export default class Derived extends BaseType {
而这一次得到错误 TS2693: 'BaseType' 仅指一种类型,但在这里被用作一个值。
所以,我的问题是:有没有办法扩展没有“export”关键字声明的类?也许一些基于原型的魔法?请注意,我的目标是创建一个新类,我想保持原来的类不变。
PS这是一个简化的例子;事实上,我正在尝试从一个名为祝福的伟大库中扩展小部件。只想创建我自己的小部件,以扩展现有小部件的功能。