/// <reference types="node" /> 是啥意思?

Posted

技术标签:

【中文标题】/// <reference types="node" /> 是啥意思?【英文标题】:What does /// <reference types="node" /> mean?/// <reference types="node" /> 是什么意思? 【发布时间】:2018-06-21 07:40:39 【问题描述】:

我遇到了 typescript 和 node 的问题,并偶然发现了一个修复程序(我收到了一个 TS 投诉,即未定义“进程”,就像 Node 中的 process.env 一样)。我所要做的就是在文件顶部粘贴一行:

/// <reference types="node" />

我不懂语法。打字稿编译器是否以某种方式阅读评论?这是如何工作的?

【问题讨论】:

看看typescriptlang.org/docs/handbook/triple-slash-directives.html 【参考方案1】:

这些被称为“三斜杠指令”(Typescript docs)

如该链接第一行所述:

三斜杠指令是包含单个 XML 标记的单行 cmets。注释的内容用作编译器指令。

所以是的,typescript 编译器在编译过程中会发现这一点并采取适当的措施。

在这种情况下,由于您使用的是 types 指令,因此您告诉编译器该文件依赖于 node 类型。

也就是说,文档还声明对于 types 指令:

仅当您手动创作 d.ts 文件时才使用这些指令

因此,如果您添加了 .ts 文件而不是 .d.ts 文件,您可能会遇到更多问题。

要在 .ts 文件中声明对 @types 包的依赖,请在命令行或 tsconfig.json 中使用 --types。详情请见using @types, typeRoots and types in tsconfig.json files。

【讨论】:

另外请注意,如果您正在为 node.js 设置项目,您可能还需要查看“noLib”编译器选项。

以上是关于/// <reference types="node" /> 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Django - Field types reference (译)

Java Reference Types

All data types in Python are “reference type“

All data types in Python are “reference type“

functions and closures are reference types-函数和闭包是引用类型

如何为整个项目启用 C# 8.0 的 Nullable Reference Types 功能