什么是 .d.ts 文件以及为什么需要它
Posted
技术标签:
【中文标题】什么是 .d.ts 文件以及为什么需要它【英文标题】:what is .d.ts file and why it is needed 【发布时间】:2015-07-04 06:37:00 【问题描述】:我正在查看angular-ui-router
的源代码,angular-ui-router.d.ts
文件夹中的angular-ui-router.d.ts
文件包含以下内容:
declare module ng.ui
interface IState
name?: string;
template?: string;
templateUrl?: any; // string || () => string
templateProvider?: any; // () => string || IPromise<string>
interface ITypedState<T> extends IState
data?: T;
我读过文件是 TypeScript 类型定义。它是什么?为什么需要它?
【问题讨论】:
About "*.d.ts" in TypeScript的可能重复 【参考方案1】:这是一个declaration file:
编译 TypeScript 脚本时,可以选择生成 声明文件(扩展名为 .d.ts),用作 与已编译 javascript 中的组件的接口。正在进行中 编译器剥离所有函数和方法体并保留 仅导出类型的签名。所结果的 然后可以使用声明文件来描述导出的虚拟 第三方 JavaScript 库或模块的 TypeScript 类型 开发人员从 TypeScript 中使用它。
声明文件的概念类似于标头的概念 在 C/C++ 中找到的文件。
【讨论】:
谢谢,这是否意味着他们使用 TypeScript 编写了这段代码?还是他们只是想让有关接口的信息易于访问?您能否详细说明一下当第三方开发人员从 TypeScript 使用它时,生成的声明文件可以用来描述 JavaScript 库或模块的导出虚拟 TypeScript 类型。? 在 C/C++ 中,我们使用头文件向外部用户公开函数、结构、类,而不会透露我们的实现。与 TypeScript 一样,外部用户只知道导出的类型,所以他们知道什么是操作、类而不知道实现。 @MarcusHenrique,是的,我很好奇这是使用TypeScript
编写的副产品,还是从 JavaScript 源文件生成的。
这可以通过多种方式生成(手动,从 TSC 编译器,有时从 JavaScript 等)。 需要,如果你想让 TypeScript 代码通过自动完成、类型检查等来引用这个模块,你需要定义文件。如果不是,您可以将其定义为“任何”类型,并像在常规 JavaScript 中一样使用它,也就是说,无需任何编译器检查。【参考方案2】:
这里是definition。
d.ts
文件描述了 3rd 方库的形状,并使 TypeScript 编译器知道如何处理这个 3rd 方代码(向编译器提供类型信息)
【讨论】:
您能详细说明一下吗?为什么这很重要?例如,为什么我们不能只编写一个类并将其导出?以上是关于什么是 .d.ts 文件以及为什么需要它的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 接口是不是应该在 *.d.ts 文件中定义