代码之家  ›  专栏  ›  技术社区  ›  Adam Rackis

TypeScript正在删除我的html导入

  •  1
  • Adam Rackis  · 技术社区  · 6 年前

    我有

    import MyHtml from "./junkhtml.htm";
    

    在TypeScript文件中,由于

    declare module "*.htm" {
      const value: string;
      export default value;
    }
    

    在一个 .d.ts 文件在我的项目上运行gulp typescript时,没有出现任何错误,但导入已完全删除。TS似乎认为我的导入只存在于类型声明空间中,并不表示任何真实的内容。我如何指示ts是的,导入需要保持,以便汇总(或网页包)可以在下游处理它?


    这是我的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"]
    }
    

    这是我用的gulpfile

    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", () => {});
    });
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   David Sherret    6 年前

    TypeScript将在不使用导入声明时删除它们。

    如果使用导入,则它应在传输后保留在文件中:

    import MyHtml from "./junkhtml.htm";
    
    // use it somehow
    console.log(MyHtml);
    

    虽然此处不适用,但在其他情况下,可能需要考虑仅针对副作用导入,因为这也将在传输后保持导入:

    import "./junkhtml.htm";