繁体   English   中英

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

[英]When is TypeScript top-level non-export code executed?

我目前对文件中的代码何时实际执行以及何时不执行感到困惑。 如果我有一个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中没有导出的顶层代码什么file1.ts执行,什么时候不执行? 即使仅导入特定导出,它是否也会执行(请参阅第一个变体)?

这让我现在很疯狂,我在模块TypeScript 手册页面上没有找到任何关于它的信息。

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

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

有关更多详细信息,请查看 TypeScript 2.8 发行说明中的​​以下部分: 仅类型导入和导出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM