gpt4 book ai didi

typescript - 如何在 ts-node 中使用三斜杠指令

转载 作者:行者123 更新时间:2023-12-05 05:39:12 33 4
gpt4 key购买 nike

我正在研究 typescript 及其模块系统。

与此同时,我发现了 Triple-Slash Deirectives。

我只是认为它是 import/export 的另一种表达方式。但它不作为一个想法。在下面的代码中,我想在 test.ts 文件中使用命名空间 Myconsole。


// Myconsole.ts

namespace MyConsole {
export function log(msg: string) {
console.log(msg);
}
}



// test.ts
/// <reference path="Myconsole.ts" />



MyConsole.log("log"); // ReferenceError occurs here. but no redline

namespace MyConsole2 {
export function foo(msg: string) {
console.log(msg);
}
}

MyConsole2.foo("ging"); // but this one works.

但是当我运行 ts-node test.ts 时它吐出 Reference Error: Myconsole is not defined

让我更困惑的是遵守 tsc -d 命令是有效的。

// test.js

/// <reference path="Myconsole.ts" /> // Do .ts file available in .js ...?
var MyConsole2;
(function (MyConsole2) {
function foo(msg) {
console.log(msg);
}
MyConsole2.foo = foo;
})(MyConsole2 || (MyConsole2 = {}));
MyConsole.log("log"); // ReferenceError occurs here. but no redline
MyConsole2.foo("ging");

我很困惑...如何正确使用三斜杠指令?

我要设置额外的配置吗??请给我一个建议

最佳答案

三斜杠引用文件,from the documentation , 用作 Typescript 编译器指令。三斜杠引用指示编译器在编译过程中包含其他文件。但文件不会被导入,只有类型声明会被导入。

引用文件仅用于类型声明和类型声明,而不是定义。它们让编译器满意,因为类型声明会存在,但是一旦 node 尝试运行它就会失败并返回 ReferenceError,因为它没有任何要指向的定义.

您可以看到 tsc 也失败了,就像 ts-node 一样。试一试:

首先用tsc test.ts 编译文件。输出 test.js(编译后的 javascript 输出)将是这样的:

/// <reference path="Myconsole.ts" />
MyConsole.log("log"); // ReferenceError occurs here. but no redline
var MyConsole2;
(function (MyConsole2) {
function foo(msg) {
console.log(msg);
}
MyConsole2.foo = foo;
})(MyConsole2 || (MyConsole2 = {}));
MyConsole2.foo("ging"); // but this one works.

一旦您尝试使用 node test.js 运行它,您就会看到相同的错误:

> node test.js
/test.js:2
MyConsole.log("log"); // ReferenceError occurs here. but no redline
^

ReferenceError: MyConsole is not defined
at Object.<anonymous> (/test.js:2:1)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
...

看,已编译的 test.js 具有相同的三斜杠引用,但 node 本身无法识别它,因为它是特定于 Typescript 的。它只识别导入/需要包含定义。当它运行时,MyConsole 未在范围内的任何位置定义。

关于typescript - 如何在 ts-node 中使用三斜杠指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72759346/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com