后面不使用import语句不编译
Posted
技术标签:
【中文标题】后面不使用import语句不编译【英文标题】:Import statement was not compiled if it was not used later
【发布时间】:2018-08-24 02:16:47
【问题描述】:
假设我在分开的文件中定义了两个类,如下所示。
// a.ts
导出默认类 A
// b.ts
导出默认类 B
下面是我使用“a.ts”和“b.ts”的代码。
// 应用程序.ts
从“./a”导入 A;
从“./b”导入 B;
在我用tsc
编译我的源代码后,我发现import
语句没有发送到javascript 文件。
// 应用程序.js
“使用严格”;
Object.defineProperty(exports, "__esModule", value: true );
但是如果我添加了一些代码来使用A
和B
,它们就会被发出。
// 应用程序.ts
从“./a”导入 A;
从“./b”导入 B;
常量 a = 新 A();
常量 b = 新 B();
// 应用程序.js
“使用严格”;
var __importDefault = (this && this.__importDefault) ||功能(模式)
返回 (mod && mod.__esModule) ?模组:“默认”:模组;
Object.defineProperty(exports, "__esModule", value: true );
const a_1 = __importDefault(require("./a"));
const b_1 = __importDefault(require("./b"));
const a = new a_1.default();
常量 b = 新 b_1.default();
我可以更改编译行为,使其始终发出import
语句,无论它是否被使用。
下面是我的tsconfig.json
。
“编译器选项”:
“目标”:“ES2017”,
“模块”:“commonjs”,
“严格”:错误,
"moduleResolution": "节点",
“esModuleInterop”:是的,
“experimentalDecorators”:是的,
“emitDecoratorMetadata”:真
【问题讨论】:
【参考方案1】:
这是design,如果不使用模块或仅使用其中的类型,则不会发出它。如果你想为副作用导入一个模块,你应该按照here的建议做一个简单的导入
import "./a";
import "./b";
【讨论】:
以上是关于后面不使用import语句不编译的主要内容,如果未能解决你的问题,请参考以下文章
Gulp SASS - 使用 @import 而不编译 scss -> css
golang的for循环后的大括号必须跟在for关键字后面
从后面的 C# 代码调用存储过程时插入语句不起作用
预编译那些事#define后面只跟一个“参数”
java 提示包不存在
java中import的作用