当你在Typescript文件中添加一条import
语句时,这个文件就被认为是一个外部模块,所以这不是一个问题:
- 文件.1.ts**
import { Type } from '...';
let whatever = 123;
...
- 文件.2.ts**
import { Type } from '...';
let whatever = 234;
...
这是可行的,但是一旦删除了这两个import
语句,这些文件就不再被认为是模块,两个同名变量就变成了全局变量,相互干扰。
问题
如何对没有任何import语句的源文件强制模块化?
3条答案
按热度按时间scyqe7ek1#
需要
import
或者export
什么的,建议导出一个undefined
的值:编译器不为此指令生成代码。
zaqlnxep2#
小心这是相当hacky但是...
给定:
不导出任何内容
也不输出任何东西,
并且无法修改
你不能把它包含在项目中,否则tsc会抱怨重复 *
所以你不能设置它的状态
或..传递参数
并且...您无法读取其输出/结果
那么...你是因为它的副作用才想要它的
把它做成一个模块
或者在浏览器中绑定这种代码
在运行时创建一个脚本元素并加载它
6mzjoqzu3#
从TypeScript 4.7开始,这个问题可以通过tsconfig.json中的
"moduleDetection": "force"
解决:Reference: https://www.typescriptlang.org/tsconfig#moduleDetection
导致此配置的原始Github问题:https://github.com/microsoft/TypeScript/issues/14279