tsconfig
项目中 tsconfig.json 的绝大多数编译选项并不影响 Cocos Creator 3D 对 Typescript 的编译。
因此,你需要小心配置其中的某些选项,以使得 IDE 的检查功能和 Cocos Creator 3D 的编译行为一致。
以下选项不应当显式修改:
compilerOptions.targetcompilerOptions.module
例如,若将 tsconfig.json 设置为:
{
"compilerOptions": {
"target": "es5",
"module": "cjs"
}
}
那么脚本代码:
const myModule = require("path-to-module");
在(使用 tsc 作为检查器的)IDE 中不会引起错误,因为compilerOptions.module 设置为了 cjs。
然而 Cocos Creator 3D 隐含的 compilerOptions.module 是 es2015,
因此在运行时它可能提示 "require 未定义" 等错误。
脚本代码:
const mySet = new Set();
对于 Cocos Creator 3D 来说是合法的,但 IDE 可能会报告错误:
因为compilerOptions.target 设置为了 es5:ECMAScript 2015 才引入 Set。
对于其他选项,你可以自由修改。
例如,当你希望禁止你项目中所有 Typscript 脚本对隐式 any 的使用,
你就可以在 tsconfig.json 中将 compilerOptions.noImplicitAny 设为 true,
如此当你用 Visual Studio Code 等 IDE 检查该文件时就会收到相应的错误提示。
对于大多数项目而言,tsconfig 的某些选项是固定的,
例如,compilerOptions.target、compilerOptions.module 以及 Cocos Creator 3D 的类型声明文件位置等。
由于 tsc 的良好设计,extends 选项使得 tsconfig.json 可以是级联的。
Cocos Creator 3D 意识到了这一点,因此,
固定的 tsconfig 选项被放置在 {项目路径}/tmp/tsconfig.cocos.json 下,
并由 Cocos Creator 3D 管理。
于是,项目根路径下的 tsconfig 可以如下配置以共享这些固定选项:
{
extends: './tmp/tsconfig.cocos.json',
compilerOptions: {
/* 自定义的 tsconfig 选项 */
}
}
所幸,当你创建新项目时,编辑器将自动为你生成这样的 tsconfig。