Búsqueda de sitios web

asp.net - TypeScript - [Las declaraciones de propiedades subsiguientes deben tener el mismo tipo] - Múltiples referencias a las mismas definiciones de tipo


Soy bastante nuevo en el uso de TypeScript y Webpack y, desafortunadamente, sigo encontrando un problema con mis declaraciones de tipos que simplemente no puedo resolver.

Para ponerlo de manera simple, mi proyecto es una aplicación ASP.NET MVC React que utiliza NPM, TypeScript y Webpack para gestionar dependencias de JavaScript. El problema con el que me estoy encontrando es que, aunque mi proyecto puede compilarse con éxito, tengo más de 180 errores que se ven así.

TS2717    (TS) Subsequent property declarations must have the same type. 
Property 'webview' must be of type
'DetailedHTMLProps<WebViewHTMLAttributes<HTMLWebViewElement>,
HTMLWebViewElement>', but here has type
'DetailedHTMLProps<WebViewHTMLAttributes<HTMLWebViewElement>,
HTMLWebViewElement>'.

Aquí hay una imagen de la consola de errores:

Ahora, si observo más de cerca haciendo clic en el tipo y presionando 'Ir a la definición', puedo ver claramente que mi proyecto tiene dos referencias definidas para el mismo tipo, como se puede ver aquí:

El problema es que ambos archivos parecen ser requisitos para mi archivo tsconfig.json del proyecto porque sin ellos no se compila.

Mi tsconfig.json se ve así:

{
  "compilerOptions": {    
    "module": "commonjs",    
    "moduleResolution": "node",
    "target": "es5",
    "sourceMap": true,
    "lib": [ "es5", "es2017", "dom"]
    "removeComments": true,
    "typeRoots": [
      "/node_modules/@types",
      "/Types/"
    ]

  },
  "compileOnSave": false,
  "exclude": [
    "/node_modules/",
    "/bin",
    "/obj"
  ]
}

y mi archivo package.json se ve así:

{
  "name": "fungalai",
  "version": "1.0.0",
  "dependencies": {
    "react": "16.4.2",
    "react-dom": "16.4.2"
  },
  "devDependencies": {
    "@types/flux": "3.1.7",
    "axios": "^0.18.0",
    "deep-diff": "^1.0.1",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-polyfill": "^6.26.0",
    "babel-preset-es2015": "6.24.1",
    "babel-preset-react": "6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "create-react-class": "^15.6.3",
    "expose-loader": "^0.7.5",
    "jszip": "^3.1.5",
    "flux": "3.1.3",
    "ts-loader": "^4.3.0",
    "typescript": "3.0.1",
    "uglifyjs-webpack-plugin": "^1.2.5",
    "webpack": "^4.8.3",
    "webpack-cli": "^2.1.4"
  }
}

Ahora sospecho que este problema tiene algo que ver con la línea en mi archivo tsconfig.json "lib": [ "es5", "es2017", "dom"], pero si elimino alguna de esas referencias, mi proyecto no se compilará porque claramente algunos de mis tipos están definidos en esas referencias de la biblioteca.

¿Alguien puede ayudarme a guiarme en la dirección correcta sobre cómo resolver este problema y referenciar correctamente el DOM junto con React en ASP.NET TypeScript?

EDITAR: También he intentado cambiar mi archivo tsconfig.json para eliminar las referencias de 'lib' (asumiendo que puedo usar un Polyfill) a "lib": []. Sin embargo, el problema aún persiste.

Respuesta #1

Proporcionar "skipLibCheck": true en compilerOptions de tsconfig.json resolvió el problema en mi caso

Respuesta #2

Este error ocurre cuando tienes una dependencia y un submódulo con la misma dependencia en una versión diferente. La forma correcta de solucionar esto es incluir una sección de "resolutions" en tu package.json. El siguiente ejemplo explica cómo usar "resolutions": package.json

{
  "name": "project",
  "version": "1.0.0",
  "dependencies": {
    "left-pad": "1.0.0",
    "c": "file:../c-1",
    "d2": "file:../d2-1"
  },
  "resolutions": {
    "d2/left-pad": "1.1.1",
    "c/**/left-pad": "^1.1.2"
  }
}

Referencia de documentación: https://classic.yarnpkg.com/en/docs/selective-version-resolutions/

Artículos relacionados