从私有npm模块导出Typescript接口

时间:2016-10-24 22:09:20

标签: typescript interface module npm

我正在制作一个带有一些接口的typescript的npm模块。在index.ts文件中,我导出了所有类和接口。我将接口声明为“interface dto {a:string;} export default dto”。

现在在index.ts中,我导入界面并执行 { dto:dto }

当它转变时,它消失了。

如何在npm模块之外公开接口?

2 个答案:

答案 0 :(得分:1)

  

当它转变时,它消失了。

如果您不使用导入,则会将其删除。这是有意的,如果它仅用于编译时类型分析,则不会对模块采用运行时依赖性。

更多

此处也包括:https://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html#import-type-only

答案 1 :(得分:0)

虽然接口是TypeScript的一个关键功能,但它们不会转换为原生JavaScript ......

TypeScript使用接口提供构建时类型安全性。但这些界面类似于“鸭子测试”#34; (如果它嘎嘎叫那么它必须是一个鸭子),并不等同于其他强类型语言中的接口,其中一个类将明确地实现一个接口。相反,TypeScript允许您使用接口而不是类。

Transpiling是一个从TypeScript交叉编译到JavaScript的过程,因此代码可以在本机JS引擎中运行(例如在浏览器中)。

只有在编写/编译代码时才能感受到TypeScript接口的好处。编译完成后,没有等效的JavaScript,这些接口就会消失。

但是,有一个TypeScript约定用于导入声明(来自.d.ts),它传达了与您生成的JavaScript代码相同的含义,因此允许JS的TS使用者从同样的强类型中受益

巴斯拉特已经提供了他的优秀书籍的链接,但我相信他误解了这个问题,并且这个链接更好地回答了这个问题:

https://basarat.gitbooks.io/typescript/docs/types/ambient/d.ts.html