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";