我正在研究一个typescript库包(说' MyPkg '),它有一些类(说' MyPkgClass '位于一些子目录[例如:src/path/to/MyPkg]),具有一些所需的功能,消费者包,比如' OtherPkg '应该扩展' MyPkgClass ',然后定义任何额外的功能
这背后的想法是为消费包提供一些基本功能(在我的控制下),以及我以后可能需要调整,增强等。
在本地测试,在OtherPkg下使用npm链接,我意识到我需要导入' MyPkgClass '为
Import MyPkgClass from “MyPkg/bin/<path>/<to>/MyPkgClass”
显然,这很糟糕,因为如果我觉得以后需要重新组织的话,它会限制我移动文件/重命名类。
我当然可以在' bin '下的固定位置有一个不同的类,并从' MyPkgClass '扩展,这样消费者OtherPkg就不会中断。但这感觉像是一个糟糕的设计,可能不是正确的/推荐的方式。
暴露MyPkgClass的正确方法是什么?我应该从索引中重新导出它吗?我的体重是多少?我应该将MyPkgClass导出为类型吗?
有谁可以帮助标准打字文档,或一些例子?-一个寻求帮助的新手
我试着搜索上述用例的typescript文档,但我没有得到正确的命中,甚至可能没有使用正确的搜索条件:(
对于像
这样需要导入的问题Import MyPkgClass from “MyPkg/bin/<path>/<to>/MyPkgClass”
可以从index导出。位于子项目MyPkg
的根目录,如下所示:
MyPkg/index.ts
export * from './bin/<path>/<to>/MyPkgClass”';
,然后在你想要使用它的另一个模块。
import MyPkgClass from 'MyPkg';
引用https://balramchavan.medium.com/smarter-way-to-organize-import-statements-using-index-ts-file-s-in-angular-c685e9d645b7
要扩展基类,您可以简单地执行:
class OtherPkgClass extends MyPkgClass {
constructor(someParameter: String) {
super(someParameter);
}
private newMethod() {
...
}
}
引用https://www.typescriptlang.org/docs/handbook/classes.html继承