【问题标题】:what is .d.ts file and why it is needed什么是 .d.ts 文件以及为什么需要它
【发布时间】: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 类型定义。它是什么?为什么需要它?

【问题讨论】:

标签: javascript 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】:

这里是definitiond.ts 文件描述了 3rd 方库的形状,并使 TypeScript 编译器知道如何处理这个 3rd 方代码(向编译器提供类型信息)

【讨论】:

  • 您能详细说明一下吗?为什么这很重要?例如,为什么我们不能只编写一个类并将其导出?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 2017-12-28
  • 2014-03-04
相关资源
最近更新 更多