TypeScript 正在删除我的 html 导入
TypeScript is removing my html import
我有
import MyHtml from "./junkhtml.htm";
在 TypeScript 文件中,因为我也有
编译
declare module "*.htm" {
const value: string;
export default value;
}
在 .d.ts
文件中。当我 运行 gulp-typescript 在我的项目上时,我没有收到任何错误,但导入已完全删除。似乎 TS 认为我的导入仅存在于类型声明 space 中,并不代表任何真实的东西。我如何指示 ts 是的,导入需要保留以便 Rollup(或 webpack)可以在下游处理它?
这是我的 tsconfig.json 文件
{
"compilerOptions": {
"allowUnreachableCode": true,
"target": "esnext",
"baseUrl": "./",
"jsx": "react",
"allowSyntheticDefaultImports": true,
"allowJs": true,
"moduleResolution": "node",
"module": "esnext",
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"typeRoots": ["./typings/modules", "./node_modules/@types"]
},
"include": ["./**/*.ts", "./**/*.tsx"],
"exclude": ["node_modules"]
}
这是我正在使用的gulp文件
const gulp = require("gulp");
const gprint = require("gulp-print").default;
const ts = require("gulp-typescript");
const tsProject = ts.createProject("./tsconfig.json", { noEmitOnError: true });
const dirs = ["applicationRoot", "modules", "util"];
gulp.task("ts", () => {
var failed = false;
return gulp
.src(["./reactStartup.ts", ...dirs.map(f => `./${f}/**/*.ts`), ...dirs.map(f => `./${f}/**/*.tsx`)], { base: "./" })
.pipe(tsProject())
.pipe(gprint(filePath => "TypeScript compiled: " + filePath))
.pipe(gulp.dest(""))
.on("finish", () => {});
});
TypeScript 将删除不使用的导入声明。
如果您使用导入,那么它应该在转译后保留在文件中:
import MyHtml from "./junkhtml.htm";
// use it somehow
console.log(MyHtml);
虽然这里不适用,但在其他情况下,有人可能只想考虑导入的副作用,因为这也会在转译后保持导入:
import "./junkhtml.htm";
我有
import MyHtml from "./junkhtml.htm";
在 TypeScript 文件中,因为我也有
编译declare module "*.htm" {
const value: string;
export default value;
}
在 .d.ts
文件中。当我 运行 gulp-typescript 在我的项目上时,我没有收到任何错误,但导入已完全删除。似乎 TS 认为我的导入仅存在于类型声明 space 中,并不代表任何真实的东西。我如何指示 ts 是的,导入需要保留以便 Rollup(或 webpack)可以在下游处理它?
这是我的 tsconfig.json 文件
{
"compilerOptions": {
"allowUnreachableCode": true,
"target": "esnext",
"baseUrl": "./",
"jsx": "react",
"allowSyntheticDefaultImports": true,
"allowJs": true,
"moduleResolution": "node",
"module": "esnext",
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"typeRoots": ["./typings/modules", "./node_modules/@types"]
},
"include": ["./**/*.ts", "./**/*.tsx"],
"exclude": ["node_modules"]
}
这是我正在使用的gulp文件
const gulp = require("gulp");
const gprint = require("gulp-print").default;
const ts = require("gulp-typescript");
const tsProject = ts.createProject("./tsconfig.json", { noEmitOnError: true });
const dirs = ["applicationRoot", "modules", "util"];
gulp.task("ts", () => {
var failed = false;
return gulp
.src(["./reactStartup.ts", ...dirs.map(f => `./${f}/**/*.ts`), ...dirs.map(f => `./${f}/**/*.tsx`)], { base: "./" })
.pipe(tsProject())
.pipe(gprint(filePath => "TypeScript compiled: " + filePath))
.pipe(gulp.dest(""))
.on("finish", () => {});
});
TypeScript 将删除不使用的导入声明。
如果您使用导入,那么它应该在转译后保留在文件中:
import MyHtml from "./junkhtml.htm";
// use it somehow
console.log(MyHtml);
虽然这里不适用,但在其他情况下,有人可能只想考虑导入的副作用,因为这也会在转译后保持导入:
import "./junkhtml.htm";