首页 > 解决方案 > Starter tsconfig.json 对于不使用打字稿的纯 JavaScript 项目来说是最松散/松散的?

问题描述

我很难找到一个样本/启动器 tsconfig.json 文件,它是最不严格/最松散/松散的选项。我有一个大型 javascript 项目,我真的对修复大量打字稿错误不感兴趣,但是,如果我的同事愿意,我想允许他们编写打字稿。

我们正在使用 create-react-app,所以我可以使用这个TSC_COMPILE_ON_ERROR标志来制作它,这样打字稿错误就不会影响正常使用。(“当设置为 true 时,即使存在 TypeScript 类型检查错误,您也可以运行并正确构建 TypeScript 项目。这些错误在终端和/或浏览器控制台中打印为警告。”)

到目前为止,我只知道我希望allowJs: truetypescript 在 .js/.jsx 文件上运行。

所以我想启用打字稿,但我想从最少数量的打字稿错误+警告开始。随着我们的发展,我们可以解决我们看到的这些问题,并逐渐启用更严格的选项。


更新:发现了一个类似的问题,不完全相同,但有些人可能认为它是重复的:TypeScript - 可能禁用类型检查?

我尝试使用这个 tsconfig.json 文件......这是几个月前我拥有的旧文件,并进行了一些修改:

{
  "compilerOptions": {
    "target": "es5", // cra default
    "lib": [
      "es6", // old cra default?
      "dom", // cra default
      "dom.iterable", // cra default
      "esnext" // cra default
    ],
    "allowJs": true, // cra default
    "skipLibCheck": true, // cra default
    "esModuleInterop": true, // cra default
    "allowSyntheticDefaultImports": true, // cra default
    "strict": false, // cra default
    "forceConsistentCasingInFileNames": true, // cra default
    "module": "esnext", // cra default
    "moduleResolution": "node", // cra default
    "resolveJsonModule": true, // cra default
    "isolatedModules": true, // cra default
    "noEmit": true, // cra default
    "jsx": "react", // cra default

    "sourceMap": true, // old cra default?
    "checkJs": true,
    "noImplicitReturns": false, // old tsconfig was set to true
    "noImplicitThis": true,
    "noImplicitAny": false, // old tsconfig was set to true
    "strictNullChecks": false, // old tsconfig was set to true
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": false,
    "noUnusedParameters": false,
    "types": ["jest"],

    "disableSizeLimit": true,
    "downlevelIteration": true,
    "allowUmdGlobalAccess": true,
    "allowUnreachableCode": true,
    "allowUnusedLabels": true,
    "alwaysStrict": false, // default
    "newLine": "lf"
  },
  "awesomeTypescriptLoaderOptions": {
    "useBabel": true,
    "babelCore": "@babel/core"
  },
  "include": ["src"], // cra default
  "exclude": ["node_modules"] // from old tsconfig
}

我陷入了这样的错误:

Property 'languageSettingString' does not exist on type 'Window & typeof globalThis'.  TS2339

    1602 |         action.data.data.account.locale !== state.locale
    1603 |       ) {
  > 1604 |         window.languageSettingString = action.data.data.account.locale
         |                ^
    1605 |         return {
    1606 |           ...state,
    1607 |           locale: action.data.data.account.locale,

在我调用 redux action/prop 的地方this.props.setTaskValue,我有这个错误......这显然在 reduxconnect调用的同一个文件中。

Property 'setTaskValue' does not exist on type 'Readonly<{}> & Readonly<{ children?: ReactNode; }>'.ts(2339)

标签: javascripttypescript

解决方案


推荐阅读