如何为打字稿编译器 (tsc) 设置默认目标 es 版本?

How can I set the default target es version for the typescript compiler (tsc)?

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

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

当我发现 TypeScript 编译器 (tsc) 不仅编译了静态类型标签,而且还 transpiled 时,我的狂喜有点减弱:

进入:

我说沉默,但实际上我有点害怕

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

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

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

不过。我真的不想每次调用 tsc.

时都写 --target es6(或 --target es11

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

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

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

您也不一定非要自己动手,GitHub 上的 tsconfig/bases project 旨在让各种项目类型的启动和 运行 配置变得容易.

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

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

在profile/imported模块中声明[全局]数组:

$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

您可以手动添加更多标志 after/before 'splatted' @tscFlags 调用。