Gatsby + tsc 不转换 rest 运算符
Gatsby + tsc doesn't transpile rest operator
我正在按照说明 here 尝试让 Gatsby 使用 TypeScript,但由于某些原因,tsc
没有转换其余 (...
) 运算符,而不是抛出以下错误:
WAIT Compiling...
ERROR Failed to compile with 1 errors
error in ./src/components/Input.tsx
Syntax Error: Unexpected token (26:95)
> 26 | const Input = ({ text, ...inputProps }) => (react_1.default.createElement(
| ^
如果我从命令行运行 tsc
,文件被正确转译,用对__rest
.
的调用替换...
这是我的 tsconfig.json
:
{
"compilerOptions": {
"outDir": "./dist/"
},
"include": [
"./src/**/*"
]
}
如您所见,它非常小。我试过使用一堆 lib
s(来自 Compiler Options)和其他选项,但似乎没有任何效果。
您应该将 "target": "es5"
添加到您的 tsconfig.json
因为 Gatsby defaults to "target": "esnext"
.
{
"compilerOptions": {
"outDir": "./dist/",
"target": "es5"
},
"include": [
"./src/**/*"
]
}
它将指示 TypeScript 将 ES6 代码转换为 ES5。
您尝试的 lib
选项只会改变 TypeScript 对代码进行类型检查的方式。例如,当使用 "target": "es5"
时,TypeScript 将不允许使用 Promise
,因为它不是 ES5 标准的一部分。
通过添加 "lib": ["dom", "es6"]
你告诉他编译成 ES5 将使用 ES6 标准库 + DOM API(它们不是 ECMAScript 的一部分,比如 document
)。
更新,使用 Gatsby 配置:
plugins: [
{
resolve: 'gatsby-plugin-typescript',
options: {
transpileOnly: true, // default
compilerOptions: {
target: 'es5',
experimentalDecorators: true,
jsx: `react`
}, // default
}
},
]
我正在按照说明 here 尝试让 Gatsby 使用 TypeScript,但由于某些原因,tsc
没有转换其余 (...
) 运算符,而不是抛出以下错误:
WAIT Compiling...
ERROR Failed to compile with 1 errors
error in ./src/components/Input.tsx
Syntax Error: Unexpected token (26:95)
> 26 | const Input = ({ text, ...inputProps }) => (react_1.default.createElement(
| ^
如果我从命令行运行 tsc
,文件被正确转译,用对__rest
.
...
这是我的 tsconfig.json
:
{
"compilerOptions": {
"outDir": "./dist/"
},
"include": [
"./src/**/*"
]
}
如您所见,它非常小。我试过使用一堆 lib
s(来自 Compiler Options)和其他选项,但似乎没有任何效果。
您应该将 "target": "es5"
添加到您的 tsconfig.json
因为 Gatsby defaults to "target": "esnext"
.
{
"compilerOptions": {
"outDir": "./dist/",
"target": "es5"
},
"include": [
"./src/**/*"
]
}
它将指示 TypeScript 将 ES6 代码转换为 ES5。
您尝试的 lib
选项只会改变 TypeScript 对代码进行类型检查的方式。例如,当使用 "target": "es5"
时,TypeScript 将不允许使用 Promise
,因为它不是 ES5 标准的一部分。
通过添加 "lib": ["dom", "es6"]
你告诉他编译成 ES5 将使用 ES6 标准库 + DOM API(它们不是 ECMAScript 的一部分,比如 document
)。
更新,使用 Gatsby 配置:
plugins: [
{
resolve: 'gatsby-plugin-typescript',
options: {
transpileOnly: true, // default
compilerOptions: {
target: 'es5',
experimentalDecorators: true,
jsx: `react`
}, // default
}
},
]