Typescript继续在导入上方添加功能

时间:2019-01-08 20:52:34

标签: typescript

当打字稿编译Javascript时,它会在顶部添加此功能

var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    }
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
import { PortWidget } from "storm-react-diagrams";

所以我得到了错误

  

第14行:导入模块主体;重新排序到顶部导入/第一

这是我的tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "es6",
      "dom"
    ],
    "sourceMap": false,
    "allowJs": true,
    "jsx": "preserve",
    "noImplicitReturns": false,
    "noImplicitThis": false,
    "noImplicitAny": false,
    "strictNullChecks": false,
    "skipLibCheck": true,
    "strict": false,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": false,
    "watch": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    // "resolveJsonModule": true,
    //"noEmit": true,
    "isolatedModules": true
  },
  "exclude": [
    "node_modules",
    "build",
    "desktop",
    "public",
    "mobile",
    "tests",
    "src/player/*"
  ],
  "include": [
    "src/admin/react"
  ]
}

有什么主意我要解决吗?

我不明白为什么每次都会添加此扩展功能。

1 个答案:

答案 0 :(得分:1)

在编译期间,TypeScript可以生成诸如__extends之类的帮助程序,以确保相关功能将在运行时正常工作。您可以将它们视为polyfills。

默认情况下,将在需要帮助的每个文件中内联帮助器。就您而言,这就是每个使用extends子句的文件。

您可以选择不使用此行为,并自行提供所需的帮助程序-仅这次,它们将仅被导入一次。使用--importHelpers使TypeScript为您从tslib中拉出它们。

tsconfig.json


{
  "compilerOptions": {
    ...
    "importHelpers": true,
    ...
  }    
}

记住要在项目中安装tslib

npm install tslib

Handbook中了解有关编译器选项的更多信息。