如何修复'Typescript“正在进行类型检查......”花费太长时间'?

Posted

技术标签:

【中文标题】如何修复\'Typescript“正在进行类型检查......”花费太长时间\'?【英文标题】:How to fix 'Typescript "Type checking in progress..." taking too long'?如何修复'Typescript“正在进行类型检查......”花费太长时间'? 【发布时间】:2020-12-03 01:25:48 【问题描述】:

每次我运行项目并更改使用 typescript 的 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 的标志,它跳过了进行类型检查2x faster 的lib 类型检查。但还是不够好。

【问题讨论】:

您可以尝试从类型检查中排除节点模块。 我已经用过了,问题不在于这个。 【参考方案1】:

在这个问题上花了很多时间,我决定升级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.在 tsconfig.json 中使用 "skipLibCheck": true 标志,它会跳过库类型检查,这将使类型检查速度提高 2 倍。

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

您可以使用yarn upgrade-interactive --latest,但要小心破坏性更改(阅读文档以解决您的问题,如果您有问题,请阅读https://***.com/a/62844942/12666332 进行 sass-loader 升级)

【讨论】:

以上是关于如何修复'Typescript“正在进行类型检查......”花费太长时间'?的主要内容,如果未能解决你的问题,请参考以下文章

typescript eventTarget dataset 如何修复报错?

如何修复 npm 无法全局安装 typescript 错误

使用 Vuex mapGetters 时如何修复 TypeScript 错误?

如何修复这个 typescript 和 graphql 错误?

如何修复 Typescript 错误“对象可能是‘未定义’”

从java转换后如何修复typescript类文件错误?