【问题标题】:How can I set the default target es version for the typescript compiler (tsc)?如何为 typescript 编译器 (tsc) 设置默认目标 es 版本?
【发布时间】:2021-03-04 04:12:54
【问题描述】:

过去 24 小时我花了很多时间学习:

  • Visual Studio Code 的工作原理
  • TypeScript 的工作原理
  • TypeScript 编译器 (tsc) 的工作原理
  • 这三个软件如何组合在一起

不到一天(!)我终于成功编写了一些基本的 TypeScript 并将其编译为 Javascript。

当我发现 TypeScript 编译器 (tsc) 不仅编译了静态类型标签,而且还转译时,我的狂喜有些消散:

  • const

进入:

  • var

我说静音,但实际上我有点害怕

然后我发现tsc 的默认转译目标是ECMAScript 3

事实证明,我可以通过使用 --target 标志调用 tsc 来保持我的 const 声明不变:

tsc my-first-typescript.ts --target es6

但是。我真的不想在每次调用tsc 时一直写--target es6(或--target es11)。

有什么办法可以为tsc 设置默认的转译目标版本,这样它就不会自动假定我想要像 1999 年那样的 javascript?

【问题讨论】:

    标签: typescript visual-studio-code terminal tsc


    【解决方案1】:

    还没有找到自己配置tsc的方法;但是声明一个全局的 tscFlags 变量就可以了。

    这是在 Powershell 中,但我确信在 bash/unix 中有等效的方法。

    在配置文件/导入模块中声明 [global] 数组

    $tscFlags = @(
        # Flags
        '--noEmitOnError'
        '--strict'
        '--alwaysStrict'
        '--noFallthroughCasesInSwitch'
        '--noImplicitAny'
        '--noImplicitReturns'
        '--noImplicitThis'
        '--noPropertyAccessFromIndexSignature'
        '--noUncheckedIndexedAccess'
        '--noUnusedLocals'
        '--noUnusedParameters'
        '--strictBindCallApply'
        '--strictFunctionTypes'
        '--strictNullChecks'
        '--strictPropertyInitialization'
        # Options
        '-t'
        'ES2020'
    )
    

    PS C:\> tsc <file.ts> @tscFlags

    您可以在'splatted' @tscFlags 调用之后/之前手动添加更多标志。

    【讨论】:

      【解决方案2】:

      我认为您不能全局更改 默认值(好吧,您可以修改 tsc 文件,但是...),但您可以设置选项(包括目标)在项目根目录中使用tsconfig.json 文件的任何给定项目; TypeScript Handbook项目配置 部分中的详细信息。例如:

      {
          "compilerOptions": {
              "target": "ES2015"
          }
      }
      

      您也不必自己动手,GitHub 上的 tsconfig/bases project 旨在让您轻松启动和运行各种项目类型的配置。

      【讨论】:

      • 谢谢你,@T.J.Crowder - 多一点试验,我终于让它工作了。此处概述了该问题:github.com/microsoft/TypeScript/issues/6591 基本上就是这样:可以创建一个工作区并添加一个tsconfig.json但是终端中任何引用文件名的命令,如:tsc my-first-typescript.ts 意味着tsconfig.json 被忽略。相反,命令需要是 tsc(即没有任何文件名),然后将咨询tsconfig.json
      • 公平地说,在 TypeScript 手册 (typescriptlang.org/docs/handbook/tsconfig-json.html) 的相关页面上,它也明确指出:“当在命令行,tsconfig.json 文件被忽略。"
      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 2016-04-29
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多