¿Cómo puedo deshabilitar todas las comprobaciones de tipo mecanografiado?

6 minutos de lectura

Me gustaría usar TypeScript en el futuro, pero por ahora, he elegido instalar TypeScript en Create React App. (Más tarde, regresaré y agregaré tipos)

Por lo tanto, me gustaría deshabilitar todos los controles de tipo.

En este momento, cuando hago algo como esto:

<PlaceSearchBar
    placeSearchChanged={this.placeSearchChanged}
/>


class PlaceSearchBar extends React.Component {
...
}

me sale un error:

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

Aparentemente necesito declarar tipos en React.Component<placeSearchChanged:function> o algo por el estilo.

Creo que es molesto y me gustaría desactivar todas las comprobaciones en mi tsconfig.json.

¿Cómo puedo deshabilitar todas las comprobaciones (pero aún así mantener instalado TypeScript, solo para el futuro)?

Este es mi tsconfig.json actual:

{
  "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"
  ]
}

  • Posible duplicado de TypeScript: ¿es posible deshabilitar la verificación de tipos?

    – Cristóbal

    23 de noviembre de 2019 a las 19:56

  • Esta pregunta se confunde si desea usar archivos .js y no usar ningún tipo o si desea usar archivos .ts e introducir tipos lentamente a medida que avanza. Si es lo último, entonces su mejor opción es una de las respuestas menos votadas con TSC_COMPILE_ON_ERROR variable de entorno

    – Michael Gacka

    17 oct 2020 a las 16:08

Avatar de usuario de Karol Majewski
Karol Majewski

Agrega esto a tu tsconfig.json:

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

y adherirse a .js/.jsx archivos por ahora. Utilizar el .ts/.tsx extensión solo cuando esté listo para usar tipos.

Si prefiere suprimir los errores línea por línea, puede utilizar un // @ts-ignore comentario.

  • ¿No debería tener allowJs también?

    – Frasco de estus

    8 de febrero de 2019 a las 12:20

  • checkJs es falso por defecto: typescriptlang.org/tsconfig#checkJs

    – James Gentes

    27 de marzo de 2021 a las 15:51

  • el comentario // @ts-ignore está trabajando. Asegúrese de agregar este comentario justo antes de la línea que produce el error.

    –Ashique Razak

    29 sep 2021 a las 17:38


  • Esto no funciona en caso de que la aplicación tenga todos los archivos TS, no JS

    – Pardeep Jain

    20 de diciembre de 2022 a las 8:08

avatar de usuario de gobien
gobien

Puede permitir que la compilación de CRA se realice incluso en presencia de errores mecanografiados.

Simplemente configure la variable de entorno TSC_COMPILE_ON_ERROR=true

Controlar Documentación CRA para obtener información más detallada

  • La compilación se ejecutará, pero los errores saturarán la consola. Aconsejaría usar exclude directiva en el tsconfig.json

    – avalancha1

    23 mayo 2021 a las 19:03

  • Creo que especificar en “excluir” excluye esos archivos en el paquete final y no estarán disponibles para usarlos en otros módulos. Si los archivos son solo archivos de definición de tipo (.d.ts), entonces está bien

    – Naga Kiran

    6 oct 2021 a las 19:04

  • Esta es la única respuesta aquí que funcionó para mí.

    – derpedy-doo

    26 de julio de 2022 a las 17:16

puedes usar un // @ts-nocheck comentario en la parte superior de un archivo para deshabilitar la verificación de tipos para ese archivo.
más @ aquí

avatar de usuario de nologin
nologin

Typescript sin tipos es Javascript. Comience su proyecto sin TypeScript y conviértalo cuando esté listo para hacerlo. Empezando con <any> no es una buena práctica y no tiene sentido en mi opinión.

Estoy de acuerdo con nologin, no tiene sentido hacer eso, sin embargo, si realmente quieres, hay algunas formas en las que puedo pensar, aquí hay un par:

Deshabilitar por archivo

añadir este comentario en la parte superior del archivo /* tslint:disable */

Excluye tu carpeta src

Excluya sus carpetas de código de tslint.json (es posible que también deba hacerlo en tsconfig.json)

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

Vacíe tslint.json y tsconfig

simplemente reemplace sus archivos tslint.json y tsconfig.json con un objeto vacío

  • Solo la segunda solución funcionará. TSLint no es el compilador de TypeScript, y un tsconfig vacío solo usará la configuración predeterminada.

    – coolreader18

    6 de febrero de 2019 a las 14:16

  • Sí, la segunda solución es omitir el compilador, pero es probable que TIMEX también haya instalado algunas pelusas que deben omitirse y que podrían ser necesarias. Hace algún tiempo, los archivos de configuración vacíos funcionaban, podrían haberse revertido (afortunadamente)

    – Dave

    8 de febrero de 2019 a las 10:10

  • la desactivación por archivo no funcionó. el ts-ignore funcionó para mí

    – Comprobación de lápiz

    8 de enero a las 4:26

Avatar de usuario de Sayed Hussainullah Sadat
Sayed Hussainullah Sadat

Estaba enfrentando el mismo problema, traté de modificar el tsconfig.json archivo de la siguiente manera.

Antes:

/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
  "compileOnSave": false,
  "compilerOptions": {
      "baseUrl": "./",
      "outDir": "./dist/out-tsc",
      "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitOverride": true,
    "noPropertyAccessFromIndexSignature": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2017",
    "module": "es2020",
    "lib": [
      "es2020",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "enableI18nLegacyMessageIdFormat": false,
    "strictInjectionParameters": true,
    "strictInputAccessModifiers": true,
    "strictTemplates": true
  }
}

Después

/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
  "compileOnSave": false,
  "compilerOptions": {
      "baseUrl": "./",
      "outDir": "./dist/out-tsc",
      "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitOverride": true,
    "noPropertyAccessFromIndexSignature": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2017",
    "module": "es2020",
    "lib": [
      "es2020",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "enableI18nLegacyMessageIdFormat": false,
    "strictInjectionParameters": false,
    "strictInputAccessModifiers": true,
    "strictTemplates": false
  }
}

cambiando "strictInjectionParameters": false, y "strictTemplates": false trabajó para mi.

  • Solo la segunda solución funcionará. TSLint no es el compilador de TypeScript, y un tsconfig vacío solo usará la configuración predeterminada.

    – coolreader18

    6 de febrero de 2019 a las 14:16

  • Sí, la segunda solución es omitir el compilador, pero es probable que TIMEX también haya instalado algunas pelusas que deben omitirse y que podrían ser necesarias. Hace algún tiempo, los archivos de configuración vacíos funcionaban, podrían haberse revertido (afortunadamente)

    – Dave

    8 de febrero de 2019 a las 10:10

  • la desactivación por archivo no funcionó. el ts-ignore funcionó para mí

    – Comprobación de lápiz

    8 de enero a las 4:26

Avatar de usuario de Harshit Juneja
Harshit Juneja

La USP de Typescript es la verificación de tipos en tiempo de compilación. En última instancia, se compila en javascript. Empezar sin texto mecanografiado. Siempre puede incluirlo en su proyecto cuando lo desee con alguna refactorización.

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

¿Ha sido útil esta solución?