gpt4 book ai didi

javascript - 什么时候执行 TypeScript 顶级非导出代码?

转载 作者:行者123 更新时间:2023-12-05 06:19:13 24 4
gpt4 key购买 nike

我目前对文件中的代码何时实际执行以及何时不执行感到困惑。如果我有一个如下所示的 file1.ts 文件:

export interface myInterface {}
export function myFunction() {}
export const myConst: {}

// ... and more exports

// top-level non-exported code
if (condition) {
myConst = ...
}

还有一个包含以下内容的 file2.ts:

import { myInterface } from "./file1.ts"
import * from "./file1.ts"
import * as file1 from "./file1.ts"
import "./file1.ts"

行为有何不同? file1.ts中没有导出的顶层代码什么时候执行,什么时候不执行?即使只导入了特定的导出,它也会执行吗(参见第一个变体)?

这让我现在很抓狂,我在 TypeScript handbook page for modules 上没有找到任何相关信息.

最佳答案

多个条件决定 TypeScript 模块是否包含在最终的、转译的 JavaScript 文件中:

  1. 在您自己的代码中使用导入变量的种类。
  2. 导入变量的类型(classinterface 等)。
  3. 从 TypeScript 2.8 开始,编译器设置 importsNotUsedAsValues 来控制行为。
  4. 自 TypeScript 2.8 以来,还有新语法 import typeexport type 用于明确排除在最终编译的 JavaScript 文件之外的模块。

查看 TypeScript 2.8 发行说明中的​​以下部分以了解更多详细信息: Type-Only Imports and Export

关于javascript - 什么时候执行 TypeScript 顶级非导出代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60873965/

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