【问题标题】:Typescript: How to modify tsconfig to support class (I'm not talking about module)Typescript:如何修改 tsconfig 以支持类(我不是在谈论模块)
【发布时间】:2020-05-08 14:54:21
【问题描述】:

我有这个 tsconfig

{
  "compilerOptions": {
    "target": "es6",
    "lib": ["es6"],
    "outFile": "index.js"
  }
}

当我编译创建类时出现错误: 使用esversion:es6

我在哪里添加这一行?真的在 tsconfig 中吗?

【问题讨论】:

    标签: typescript visual-studio-code


    【解决方案1】:

    您使用 ES6 模块编写 TS 源代码,但截至 2016 年 1 月,没有浏览器原生支持此模块系统。因此,您可能希望将 ES6 模块转换为不同的模块系统:CommonJS、AMD、SystemJS。这可以使用模块选项来完成。有构建时或运行时转译器​​将 ES6 模块系统转译成构建系统 (Webpack) 或模块加载器 (SystemJS) 支持的模块系统之一。如果未指定,则如果目标是 ES6,则模块默认为 ES6,否则为 CommonJS。我更喜欢明确地将目标设置为 CommonJS:

    也许你应该添加module 属性。

    {
        "compilerOptions": {
            "module": "CommonJS" // for exapmle
       }
    }
    

    另外你应该添加lib:

    {
        "compilerOptions": {
        "lib": ["es6", "dom"],
        }
    }
    

    更多详情:https://indepth.dev/configuring-typescript-compiler/

    【讨论】:

    • 你确定它回答了我关于课程的问题,我不是在谈论模块吗?
    • 我说的是模块分辨率。在 ECMAScript 2015 中引入的 JavaScript 类主要是 JavaScript 现有的基于原型的继承的语法糖。因此,您需要将 es2015 语法转换为浏览器可以理解(如果您当然是为浏览器开发的)
    • 将目标设置为“es6”。这将使 TypeScript 编译器生成 ECMAScript 6 代码,这几乎与 TypeScript 代码逐行相同。将模块设置为“commonjs”,这样你的 TypeScript 模块就像 node 的模块和 npm 包一样工作。如果您为浏览器开发,最好将其设置为“amd”(与 require.js 等库一起使用)。 tvcutsem.github.io/2016/01/my-ES6-development-setupmedium.com/@tommedema/…
    • 或者你对 linter 有问题?您应该提供更多详细信息。如果您对 linter 有任何问题,请查看 stackoverflow.com/questions/36318895/vs-code-with-es6
    • 必须是 linter 虽然我不明白为什么我需要 linter 但谢谢会看看它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2019-11-08
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多