programing

TypeScript - [후속 속성 선언은 동일한 유형이어야 함] - 동일한 유형 정의에 대한 다중 참조

newsource 2023. 7. 19. 21:22

TypeScript - [후속 속성 선언은 동일한 유형이어야 함] - 동일한 유형 정의에 대한 다중 참조

저는 TypeScript와 Webpack을 사용하는 것이 다소 생소하지만, 안타깝게도 제 유형 선언과 관련하여 해결할 수 없는 문제가 계속 발생하고 있습니다.

간단히 말하면, 제 프로젝트는 NPM, TypeScript 및 Webpack을 사용하여 JavaScript 종속성을 관리하는 ASP.NET MVC React 응용 프로그램입니다.문제는 제 프로젝트가 성공적으로 컴파일될 수 있는 동안 제가 극복한 것이라는 것입니다.180 errors이렇게 생겼어요.

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>'.

다음은 오류 콘솔 사진입니다.

유형을 클릭하고 '정의로 이동'을 눌러 자세히 살펴보면 프로젝트에 다음과 같은 유형에 대해 정의된 두 개의 참조가 있음을 알 수 있습니다.

enter image description here

문제는 이 두 파일이 모두 제 프로젝트 tsconfig.json 파일에 대한 요구 사항으로 보인다는 것입니다. 이 파일이 없으면 컴파일이 되지 않습니다.

my tsconfig.json은 다음과 같습니다.

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

그리고 내 소포.json 파일은 다음과 같습니다.

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

이제 나는 이 문제가 내 tsconfig.json 파일의 줄과 관련이 있다고 의심합니다."lib": [ "es5", "es2017", "dom"]그러나 이러한 참조 중 하나라도 제거하면 라이브러리 참조에 내 유형 중 일부가 명확하게 정의되어 있기 때문에 프로젝트가 컴파일되지 않습니다.

ASP.NET TypeScript에서 React와 함께 DOM을 올바르게 참조하고 이 문제를 해결하는 방법에 대해 올바른 방향으로 안내해 줄 수 있는 사람이 있습니까?

편집: 저는 또한 tsconfig.json 파일을 변경하여 'lib' 참조를 "lib": []로 제거하려고 시도했습니다.하지만 문제는 여전히 남아 있습니다.

제공"skipLibCheck": true로.tsconfig.json compilerOptions나의 경우에 문제를 해결했습니다.

저는 다음과 같은 github 문제를 발견했습니다. 저는 당신이 직면하고 있는 문제의 근본 원인을 꽤 확신합니다. https://github.com/DefinitelyTyped/DefinitelyTyped/issues/25145

따라서 버전 16.3.9에서는 @types/react가 표시되고 버전 16.0.5에서는 @types/react-dom이 표시됩니다. 이는 명시적으로 요청했기 때문입니다.그러나 @types/react-dom에는 @types/react에 대한 종속성이 다음과 같이 나열됩니다."@types/react": "*"

[이]는 "@types/messages의 최신 버전"으로 해석되므로 패키지의 추가 버전을 설치합니다.

따라서 패키지 유형의 v16.3.9 및 v16.3.12 버전이 동시에 사용되므로 오류가 발생합니다.

이 문제를 해결하는 두 가지 방법이 있습니다.

  1. 패키지에 포함된 @types/react 패키지의 최신 버전으로 업데이트합니다.제이손
  2. 패키지에 해상도 섹션을 추가합니다.json은 Yarn에게 의존성을 다르게 해결하라고 말합니다.

이 오류는 종속성과 종속성이 동일한 하위 모듈이 다른 버전에 있는 경우에 발생합니다.은 "을 포함하는 입니다.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"
  }
}

설명서 참조: https://classic.yarnpkg.com/en/docs/selective-version-resolutions/

위의 피드백 덕분에 저는 제 문제에 대한 해결책을 찾았다고 생각합니다.

  1. 'npm uninstall react -g'를 실행하여 글로벌 캐시에서 react 패키지를 제거합니다.
  2. 는 서수참만에서 합니다.package.json@types/react꾸러미

    "devDependencies": {"@types/react": "16.4.13" }

나의 마지막 소포.json 파일은 다음과 같습니다.

{
  "name": "fungalai",
  "version": "1.0.0",
  "dependencies": {
    "react": "16.4.2",
    "react-dom": "16.4.2"
  },
  "devDependencies": {
    "@types/flux": "3.1.7",
    "@types/react": "16.4.13",
    "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"
  }
}

다음과 같이 tsconfig.json을 입력합니다.

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "target": "es5",
    "sourceMap": true,
    "jsx": "react",
    "lib": [ "es6", "dom" ], 
    "removeComments": true,
    "typeRoots": [
      "/node_modules/@types",
      "/Types/"
    ]
  },
  "compileOnSave": false,
  "exclude": [
    "/node_modules/",
    "/bin",
    "/obj"
  ]
}

이것으로 오류가 해결된 것 같습니다.

가 다른 의 프로젝트에서다패가서설다니습치했전버을른다로키지로서른을 했습니다.@types/react의 신의에서.package.json확인할 유형에 대한 특정 버전을 지정할 수 있습니다.

// package.json
{
  // ...
  "dependencies": {
    "react": "16.14.0",
    "react-dom": "16.14.0",
    // ...
  },
  "devDependencies": {
    "@types/react": "^16.14.0",
    "@types/react-dom": "^16.14.0",
    // ...
  },
  "resolutions": {
    "@types/react": "^16.14.0"
  }
}

언급URL : https://stackoverflow.com/questions/52107983/typescript-subsequent-property-declarations-must-have-the-same-type-multip