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>'.
다음은 오류 콘솔 사진입니다.
유형을 클릭하고 '정의로 이동'을 눌러 자세히 살펴보면 프로젝트에 다음과 같은 유형에 대해 정의된 두 개의 참조가 있음을 알 수 있습니다.
문제는 이 두 파일이 모두 제 프로젝트 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 버전이 동시에 사용되므로 오류가 발생합니다.
이 문제를 해결하는 두 가지 방법이 있습니다.
- 패키지에 포함된 @types/react 패키지의 최신 버전으로 업데이트합니다.제이손
- 패키지에 해상도 섹션을 추가합니다.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/
위의 피드백 덕분에 저는 제 문제에 대한 해결책을 찾았다고 생각합니다.
- 'npm uninstall react -g'를 실행하여 글로벌 캐시에서 react 패키지를 제거합니다.
는 서수참만에서 합니다.
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
'programing' 카테고리의 다른 글
컬러 리소스에서 컬러 인트를 얻으려면 어떻게 해야 합니까? (0) | 2023.07.19 |
---|---|
Django와 함께 Pylint 사용 (0) | 2023.07.19 |
문자열에서 선행 및 후행 공백을 제거하는 방법은 무엇입니까? (0) | 2023.07.19 |
Excel 프레임을 읽을 때 특정 열 집합 건너뛰기 - 팬더 (0) | 2023.07.19 |
파이썬에서 %time은 무엇입니까? (0) | 2023.07.19 |