当您向Typescript文件添加import
语句时,此文件被视为外部模块。所以这不是问题:
File.1.ts
import { Type } from '...';
let whatever = 123;
...
File.2.ts
import { Type } from '...';
let whatever = 234;
...
所以这很有效。但是,在删除这两个import
语句的那一刻,这些文件不再被视为模块,并且具有相同名称的两个变量都会全局干扰彼此。
如何强制对没有任何导入语句的源文件进行模块化?
答案 0 :(得分:2)
需要import
或export
。我建议导出undefined
值:
export let undefined;
编译器不会为此指令生成任何代码。
答案 1 :(得分:0)
要注意它非常 hacky 但是......
它不是一个模块,
不出口任何东西
也没有出口,
并且无法修改
你不能把它包含在项目中,或者tsc会抱怨重复
所以...你不能设置它的状态
或..通过参数
并且......你无法阅读它的输出/结果
// file: notamoduleA.ts:
let x = "x";
(global as any).x = x;
// file: notamoduleB.ts:
let x = "y";
(global as any).x = x;
让它成为一个模块?
// file: index.ts:
import * as ts from "typescript";
import * as fs from "fs";
eval(
ts.transpileModule(
fs.readFileSync(
"./external/notamoduleA.ts", "utf8")+
"\n export = {name: 'A'}",{
// options ...
}
).outputText
);
console.log((global as any).x);
eval(
ts.transpileModule(
fs.readFileSync(
"./external/notamoduleB.ts", "utf8")+
"\n export = {name: 'B'}",{
// options ...
}
).outputText
);
console.log((global as any).x);
或在浏览器中捆绑那种代码
并在运行时创建一个脚本元素并加载它?