如何解决“打字稿“正在进行类型检查...”,时间太长”的问题?

时间:2020-08-13 08:24:49

标签: javascript typescript frontend cpu-usage typechecking

每次我运行项目并在使用打字稿的Vuejs front-end app中的文件中更改内容时,打字稿/ webpack都会立即告诉编译成功,例如:DONE Compiled successfully in 635ms,但是类型检查将花费很长时间告诉您是否有错误或不喜欢:No type errors found Version: typescript 3.9.6 Time: 41131ms,它将使用high cpu usage进行这种类型的检查,我认为这对我每天8小时开发的笔记本电脑有害无益。

enter image description here

我试图在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"
  ]
}

Update2

您可以将此https://github.com/SeyyedKhandon/vuejs-persian-chat-scaffold用作reprex(克隆typecheck分支),正如您在此简单应用程序中所看到的那样,类型检查需要2秒钟,这是完全不可接受的。它与vue-composition-api plugin相关吗?

Update3

我发现"skipLibCheck": true中有一个名为tsconfig.json的标志,它会跳过进行类型检查2x faster的库类型检查。但仍然不够好。

1 个答案:

答案 0 :(得分:0)

花了很多时间解决这个问题之后,我决定升级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 "skipLibCheck": true中的tsconfig.json标志,跳过lib类型检查,这会使类型检查快2倍。

  1. 如果问题仍然存在,->升级您的package.json

您可以使用yarn upgrade-interactive --latest,但要注意避免更改(请阅读文档以解决您的问题,如果遇到问题,请阅读https://stackoverflow.com/a/62844942/12666332进行sass-loader升级)