设置
让我们说我们有两个文件,A.ts和Bdts.现在在A里面我们有:
class A implements B{...}
Run Code Online (Sandbox Code Playgroud)
现在假设我想将所有的打字稿文件合并到一个单一的定义文件中.我知道如何执行此操作的唯一方法是创建.js文件,然后创建生成的.d.ts文件.
因此我们做:
tsc --out foo.js --declaration B.d.ts A.ts
Run Code Online (Sandbox Code Playgroud)
我们得到foo.js和foo.d.ts.
现在唯一的问题是foo.d.ts只包含A.ts的定义而不包含Bdts的定义.因此,要使我们生成的foo.d.ts实际工作而不抛出错误,我们需要添加对Bdts的手动引用或者我们需要将Bdts的全部内容复制并粘贴到foo.d.ts中.
两种解决方案都相当难看.那么有没有办法通过typescript编译器创建一个单一的声明文件,该编译器也将包括用户创建的接口?我肯定错过了什么...
行为是设计的,它旨在使编写库扩展和管理依赖关系更容易一些.例如,如果您正在编写jQuery插件,则希望您的.d.ts
文件包含所有定义,但不包含jQuery定义.因此,编译器不会将"外部" .d.ts
文件中的任何内容添加到.d.ts
您生成的组合文件中.
如果它确实包含这些定义,那么当人们组合多个库时,它会导致重复的定义错误(即jQuery定义将在每个插件定义中重复).
如果您希望代码包含在单个编译.d.ts
文件中,则需要源自.ts
不带d前缀的文件.这确实意味着将declare
关键字添加到文件中的模块/类中 - 但实际上,即使对于.d.ts
文件,这也可能成为0.9版本中的要求,因此不会产生太大的开销.
从本质上讲,您可以将文件扩展名视为如下:
.ts
文件是程序的内部文件.d.ts
文件是外部依赖项 归档时间: |
|
查看次数: |
1329 次 |
最近记录: |