【问题标题】:Typescript: Understanding how the pieces fit - typings, @typings, tsc and DefinitelyTypes打字稿:了解作品如何适合 - 打字,@typings,tsc和DefinitelyTypes
【发布时间】:2017-02-26 00:12:20
【问题描述】:

我说对了吗?

tsc


它是 typescript cli 工具和在我的机器上运行的全局版本。

打字


typings 是一些东西。一个 cli 工具,用于将 .d.ts 文件安装到您的项目和保存到我的项目中的文件夹中。

例如:

您可以通过运行搜索 .d.ts 脚本:

typings search foo

并添加一个包:

typings install --global --save dt~foo

然后让typings/index.d.ts 引用我所有的.d.ts 定义文件

/// <reference path="globals/foo/index.d.ts" />

如果我想在项目中的任何地方使用foo,我可以添加

 declare var foo: any;
 import foo from "foo";

绝对类型


Definitely Types 文件具有 .d.ts 扩展名,允许在 Typescript 中调用 javascript 方法

@typings


是位于node_modules/@typings 的文件夹,与typings 文件夹相同,但通过运行npm install @typings/foo 而不是typings install foo 安装。


我的问题是:

  1. 为什么有两种不同的方法来安装类型?第一种方法是在我的项目中包含 Definitely Types 文件的折旧方法吗?

  2. @typings 模块是否仍可通过运行搜索?

    打字搜索 foo

  3. 我如何让我的项目知道我的typings,像/// &lt;reference path="globals/foo/index.d.ts" /&gt; 这样定义它们被废弃了吗?

  4. 我是否总是/何时在我的项目中声明我的 .d.ts 文件,例如 declare var foo: any;

  5. 安装时还需要使用ambientglobal 标志吗?

【问题讨论】:

    标签: typescript typing tsc


    【解决方案1】:

    这对我来说有点令人困惑,因为过去几个月我一直在熟悉 TypeScript...

    tsc

    正确,这是 T类型Script C编译器,可将您的文件转换为 JavaScript。

    打字

    Typings 是一个 cli TypeScript 定义管理器,它允许您管理(搜索、安装、卸载等)来自各种来源的 JavaScript 库的定义文件 (*.d.ts)。

    明确类型

    DefinitelyTyped 是定义文件的存储库,它是 Typings 允许您从中收集/管理文件的来源之一。

    npm @types

    好消息是使用最新版本的 TypeScript(2.0+ 版),您不再需要使用管理器和/或担心从哪些存储库收集文件。现在可以通过 npm 安装来自definitelyTyped 的所有定义(例如:npm install @types/knockout --save)。

    使用此方法将下载定义文件,将依赖项保存在您的 project.json 文件中(如果指定了 --save 标志),然后 TypeScript 会在您 @987654326 时自动查找定义@代码中的模块(如果使用此方法,则不再需要使用/// &lt;reference /&gt;)。


    TypeScript website 有关于项目设置和how to use tsconfig.json 文件的大量文档,可以正确设置您的应用程序,以便在有或没有定义文件的情况下进行编译。

    【讨论】:

    • 感谢您抽出宝贵时间回答这个问题。你碰巧也知道我的问题 4 和 5 吗?
    • 4) 通过 npm 安装的第三方 JavaScript 不再需要使用 triple slash directives 引用定义文件。这是因为 @types 文件夹被认为对编译器可见。
    • 对于您为内部模块创建的声明文件,只需将它们放在同一个文件夹或父文件夹中,编译器就会选择它。但是建议使用允许指定 glob(例如:src/**/*)的 tsconfig.json,这将告诉编译器包含所有支持的打字稿文件。
    • 5) 在使用 npm 安装类型时,您不再需要指定“全局”标志,因为所有外部类型现在都被认为是全局的。至于“环境”我不确定,但我认为这也不再需要。 documentation on module resolution 应该可以帮助您解决大部分问题。
    猜你喜欢
    • 2018-10-10
    • 2021-02-04
    • 2015-03-23
    • 2021-06-19
    • 1970-01-01
    • 2018-11-03
    • 2017-02-26
    • 2019-05-26
    • 2022-08-17
    相关资源
    最近更新 更多