如何修复 'Typescript "Type checking in progress..." taking too long'?
How to fix 'Typescript "Type checking in progress..." taking too long'?
每次我 运行 项目并在我的 Vuejs front-end app
中使用打字稿的文件中更改某些内容时,typescript/webpack 立即告诉编译成功,如:DONE Compiled successfully in 635ms
但是类型检查需要很长时间才能判断是否有错误:No type errors found Version: typescript 3.9.6 Time: 41131ms
并且它将使用 high cpu usage
进行这种类型检查,我认为这对我的笔记本电脑来说是有害的,每天 8 小时发展中。
我试图在 tsconfig.json
中设置一些标志,正如文档所说 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html:
"incremental": true,
"tsBuildInfoFile": "./buildcache/front-end",
但什么都没有改变,我也试过"watch":true
,但都没有。所以我想知道我们应该如何解决打字稿类型检查的问题(检查时间太长且 cpu 使用率高)
更新
这是我的 tsconfig:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"types": [
"webpack-env"
],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
]
}
更新2
您可以将此 https://github.com/SeyyedKhandon/vuejs-persian-chat-scaffold 用作 reprex(克隆 typecheck
分支),正如您在这个简单的应用程序中看到的那样,类型检查需要 2 秒,这是不可接受的根本。与vue-composition-api plugin
有关吗?
更新3
我发现 tsconfig.json
中有一个名为 "skipLibCheck": true
的标志,它会跳过 lib 类型检查,从而进行类型检查 2x faster
。但还是不够好。
在这个问题上花了很多时间后,我决定升级 package.json
,第一步我升级了 3 个包,包括 "@vue/composition-api": "^1.0.0-beta.3" -> "^1.0.0-beta.10"
和 "sass-loader": "^7.1.0" -> "^9.0.3"
和 "typescript": "~3.9.3", -> "~3.9.7"
,然后类型检查时间突然减少到 4s
,这是非常有前途的。
所以,这就是我所做的:
1.use tsconfig.json
中的 "skipLibCheck": true
标志,它会跳过 lib 类型检查,这将使 type-checking 快 2 倍。
- 如果问题仍然存在
->
升级您的package.json
您可以使用 yarn upgrade-interactive --latest
但要小心破坏性更改(请阅读文档来解决您的问题,如果 sass-loader 升级时遇到问题,请阅读 )
每次我 运行 项目并在我的 Vuejs front-end app
中使用打字稿的文件中更改某些内容时,typescript/webpack 立即告诉编译成功,如:DONE Compiled successfully in 635ms
但是类型检查需要很长时间才能判断是否有错误:No type errors found Version: typescript 3.9.6 Time: 41131ms
并且它将使用 high cpu usage
进行这种类型检查,我认为这对我的笔记本电脑来说是有害的,每天 8 小时发展中。
我试图在 tsconfig.json
中设置一些标志,正如文档所说 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html:
"incremental": true,
"tsBuildInfoFile": "./buildcache/front-end",
但什么都没有改变,我也试过"watch":true
,但都没有。所以我想知道我们应该如何解决打字稿类型检查的问题(检查时间太长且 cpu 使用率高)
更新
这是我的 tsconfig:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"types": [
"webpack-env"
],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
]
}
更新2
您可以将此 https://github.com/SeyyedKhandon/vuejs-persian-chat-scaffold 用作 reprex(克隆 typecheck
分支),正如您在这个简单的应用程序中看到的那样,类型检查需要 2 秒,这是不可接受的根本。与vue-composition-api plugin
有关吗?
更新3
我发现 tsconfig.json
中有一个名为 "skipLibCheck": true
的标志,它会跳过 lib 类型检查,从而进行类型检查 2x faster
。但还是不够好。
在这个问题上花了很多时间后,我决定升级 package.json
,第一步我升级了 3 个包,包括 "@vue/composition-api": "^1.0.0-beta.3" -> "^1.0.0-beta.10"
和 "sass-loader": "^7.1.0" -> "^9.0.3"
和 "typescript": "~3.9.3", -> "~3.9.7"
,然后类型检查时间突然减少到 4s
,这是非常有前途的。
所以,这就是我所做的:
1.use tsconfig.json
中的 "skipLibCheck": true
标志,它会跳过 lib 类型检查,这将使 type-checking 快 2 倍。
- 如果问题仍然存在
->
升级您的package.json
您可以使用 yarn upgrade-interactive --latest
但要小心破坏性更改(请阅读文档来解决您的问题,如果 sass-loader 升级时遇到问题,请阅读 )