我见过很多类似的问题,但它们与第一个问题不同。
我有一个用tsc
编译的库,并且有一个应用程序。我在library.js
中加入了app.js
和index.html
。
在app.ts
中,我尝试扩展在library.d.ts
中键入的类,并且一切正常,直到有一个我想扩展到的类。
这里是example library和example application的链接。描述中包括重现正常构建和失败构建的步骤。
答案 0 :(得分:1)
感谢您易于执行的复制步骤。通过阅读您正在使用的pip-webui-tasks
构建系统的源代码,我弄清楚了正在发生的事情(该文件似乎文献不多)。 pip-webui-tasks
基于Browserify。 Browserify使用“ last ”入口点作为主要模块,获取“入口点”文件列表并捆绑其依赖项。主模块是唯一可以在window.library
上导出的模块。默认情况下,pip-webui-tasks
将入口点列表设置为按路径的字典顺序列出的所有源文件的列表。在常规版本中,最后一个源文件按字母顺序恰好是src/services/index.ts
,因此它成为您的主要模块,并且可以实现所需的行为。但是,当您添加src/services/other/other.ts
时,它将成为您的主要模块。
在JavaScript捆绑包中进行上述操作时,.d.ts
文件的编写就好像所有模块中的所有内容都已导出一样,这是不正确的。我认为这是pip-webui-tasks
中的错误。
您将不必依赖pip-webui-tasks
的默认行为,而需要在build.conf.js
中指定自己的入口点列表。您可以使用src/services/index.ts
作为最后一个列出所有文件,但是在确保导入和导出所需的所有内容之后仅指定src/index.ts
可能会更容易。也就是说,您可以将以下内容添加到build.conf.js
:
browserify: {
entries: ['src/index.ts']
},
以及以下src/index.ts
:
export * from './services';
有了这些更改,应用程序将以与正常构建相同的方式为我加载。