如何禁用所有typescript类型检查?

IT技术 javascript reactjs typescript
2021-04-09 18:19:42

我想在未来使用 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个回答

将此添加到您的tsconfig.json

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

现在坚持使用.js/.jsx文件。仅当您准备好使用类型时才使用.ts/.tsx扩展名。

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

评论// @ts-ignore有效。确保在产生错误的行之前添加此注释。
2021-06-03 18:19:42
checkJs默认为 false:typescriptlang.org/tsconfig#checkJs
2021-06-08 18:19:42
它不应该也有allowJs吗?
2021-06-20 18:19:42

没有类型的typescript是 Javascript。在没有 Typescript 的情况下启动您的项目,并在您准备好时进行转换。开始<any>不是一个好习惯,在我看来没有任何意义。

公认的解决方案是关于 .js 和 .ts。这与这篇文章指向相同的方向。使用 js 并在您准备好时切换到 ts。@Karol 刚刚公开了 tsconfig 设置。
2021-05-24 18:19:42
虽然这个答案在 OP 的上下文中有意义,但它没有回答标题(这就是我来到这里的原因)。仅供参考:我正在寻找在生成的客户端文件中禁用所有类型检查,其中包含property not definitely accessed from constructor.
2021-06-04 18:19:42
在 Typescript Express 控制器中考虑这样的事情:``` // 绑定内部方法 Object.getOwnPropertyNames(ProjectController.prototype) .filter((methodName: string) => methodName !== 'constructor') // @ts-ignore .forEach((method: string) => (this[method] = this[method].bind(this))); ``` 似乎没有可能的方式以 TS 喜欢它甚至允许和编译它的方式编写它,对于这些极端情况,我相信这个“​​关闭”注释/功能已经实现。
2021-06-06 18:19:42

即使存在typescript错误,您也可以让 CRA 构建发生。

只需设置环境变量 TSC_COMPILE_ON_ERROR=true

查看CRA 文档以获取更多详细信息

构建将运行,但错误会使控制台混乱。我建议excludetsconfig.json
2021-05-27 18:19:42
我认为在“排除”中指定会排除最终包中的那些文件,并且无法在其他module中使用它们。如果这些文件只是类型定义文件 (.d.ts),那就没问题
2021-05-27 18:19:42

我同意 nologin,这样做没有意义,但是如果你真的想要,我可以想到几种方法,这里有一些:

按文件禁用

在文件顶部添加此注释 /* tslint:disable */

排除您的 src 文件夹

从 tslint.json 中排除您的代码文件夹(也可能需要在 tsconfig.json 上执行此操作

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

清空 tslint.json 和 tsconfig

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

只有第二种解决方案有效。TSLint 不是typescript编译器,空的 tsconfig 将只使用默认设置。
2021-05-30 18:19:42
是的,第二个解决方案是绕过编译器,但很可能 TIMEX 也安装了一些需要绕过的 linting,这可能是必需的。前一段时间空的配置文件正在工作,可能已经恢复(谢天谢地)
2021-06-18 18:19:42

Typescript 的 USP 是在编译时进行类型检查。它最终编译为 javascript。从没有typescript开始。当您想要进行一些重构时,您始终可以将它包含在您的项目中。

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