如果你有如下代码:
//other.js|ts
console.log("module sideffect")
export function foo() {
}
//main.js|ts
import {foo} from "./other"; // foo is not used
console.log("do something else");
那么 JavaScript 和 TypeScript 在这种情况下的行为会有所不同。
TypesScript 将省略 的导入"./other"
,并且console.log("module sideeffect")
将不会触发。
而 JavaScript 将执行导入并且它将触发。
另一方面,如果我们进行如下导入:
import "./other";
模块的副作用将会激发。
这里有一个相关问题:
还有这里:
两者都在谈论这个问题,但不幸的是,两个答案现在都指向不再存在的 TypeScript 文档。
我正在寻找 TypeScript 为何会省略此内容的规范原因,以及这是否是可配置的行为。(可以想象这样一种情况:由于不再使用导入,代码停止工作)。
相关选项是
verbatimModuleSyntax
。 它的名称有点不言自明,如果您点击该链接,文档中会有更多详细信息,但简而言之,它会保留type
import
您编写的所有非 s 。我在文档中找不到简明的解释,但该
verbatimModuleSyntax
选项的描述有一些理由,相关功能的发行说明也是如此:--verbatimModuleSyntax
在 5.0 中