如何禁用所有打字稿类型检查?

时间:2019-02-03 19:33:59

标签: javascript reactjs typescript

我希望将来使用TypeScript ,但是目前,我选择在Create React App中安装TypeScript。 (稍后,我将返回并添加类型)

因此,我想禁用所有类型检查。

现在,当我做这样的事情时:

<PlaceSearchBar
    placeSearchChanged={this.placeSearchChanged}
/>


class PlaceSearchBar extends React.Component {
...
}

我得到一个错误:

Type error: Type '{ placeSearchChanged: (place: any) => void; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<PlaceSearchBar> & Readonly<{ children?: ReactNode; }> & Readonly<{}>'.
  Property 'placeSearchChanged' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<PlaceSearchBar> & Readonly<{ children?: ReactNode; }> & Readonly<{}>'.  TS2322

显然,我需要在React.Component<placeSearchChanged:function>中声明类型或类似的类型。

我认为这很烦人,我想禁用tsconfig.json中的所有检查。

如何禁用所有检查(但仍安装TypeScript,以防将来使用)?

这是我当前的tsconfig.json:

{
  "compilerOptions": {
    "target": "es6",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext",
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "preserve",
    "noImplicitAny": false,
  },
  "include": [
    "src"
  ]
}

6 个答案:

答案 0 :(得分:22)

没有类型的Typescript是Javascript。 在没有Typescript的情况下启动您的项目,并在准备就绪时进行转换。 以<any>开头不是一个好习惯,我认为这没有任何意义。

答案 1 :(得分:11)

将此添加到您的tsconfig.json

{
  "compilerOptions": {
    ...
    "checkJs": false
    ...
  }
}

并暂时坚持.js / .jsx文件。仅在准备使用类型时,才使用.ts / .tsx扩展名。

如果您希望逐行排除错误,则可以使用// @ts-ignore注释。

答案 2 :(得分:4)

即使出现打字稿错误,您也可以让CRA建立。

只需设置环境变量TSC_COMPILE_ON_ERROR=true

检查CRA documentation了解更多详细信息

答案 3 :(得分:0)

Typescript的USP在编译时进行类型检查。最终可以编译为javascript。从没有打字稿开始。如果需要进行重构,可以始终将其包括在项目中。

https://www.typescriptlang.org/docs/handbook/migrating-from-javascript.html

答案 4 :(得分:-1)

为什么比使用Typescript?您粘贴的组件代码的文件类型是什么?如果是js文件,则可以将allowJs更改为false。这将告诉编译器不要检查js文件。

答案 5 :(得分:-2)

我同意nologin,这样做是没有意义的,但是,如果您确实希望有几种方法可以想到,这里有一些建议:

按文件禁用

将此评论添加到文件/* tslint:disable */

的顶部

排除您的src文件夹

从tslint.json中排除代码文件夹(可能也需要在tsconfig.json上完成

{
 // some linting options
  linterOptions: {
    exclude: ['src/**','components/**'],
  }
}

空tslint.json和tsconfig

只需用空对象替换tslint.json和tsconfig.json文件