programing

IntegrinentAttributes & IntegrinentClassAttributesReact.js 유형에는 할당할 수 없습니다.

topblog 2023. 6. 17. 08:14
반응형

IntegrinentAttributes & IntegrinentClassAttributesReact.js 유형에는 할당할 수 없습니다.

함께 일해 왔습니다.react.js잠시 동안최근에 다음과 같은 오류가 발생하기 시작했습니다.

Type '{}' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes'

무슨 일인지 모르겠어요.저는 그것에 대해 검색했고 제가 다른 사람들의 말을 발견한 것은 그것이 문제라는 것입니다.props여기 제가 본 시나리오가 있습니다.다음보다는:

<MyComponent action={this.state.action} />

다음 작업은 괜찮습니다.

<MyComponent {...props} />

나는 이것이 무엇인지 이해하고 싶습니다.IntrinsicAttributes그리고.IntrinsicClassAttributesreact왜 그런 종류의 오류가 발생하는지, 그리고 이것들이 실제로 무엇인지에 대한 자세한 답변을 해주실 수 있나요?

고유 속성 및 고유 클래스 속성

TypeScript로 구현된 인터페이스입니다.사용자 지정 구성 요소로 작업하는 동안 DOM 요소와의 React 및 .jsxs 상호 작용에 영향을 줍니다.


기본 원리

당신이 가지고 있다고 가정해 보겠습니다.

interface BarProps {
  foo: string;
}

class Bar extends React.Component<BarProps> {
  ...
}

렌더링을 시도할 경우

render() {
  return (
    <form>
      <Bar />
    </form>
  );
}

인터페이스 유형 검사를 위반하기 때문에 유사한 오류가 표시됩니다.구성 요소에는 필수 속성이 있어야 합니다.BarProps여기서 논쟁으로 통과되었습니다.

효과를 보기 위해서는, 다음과 같은 일을 해야 할 것입니다.

render() {
  return (
    <form>
      <Bar foo="Jack Daniel's"/>
    </form>
  );
}

또는 구성요소 정의 자체에서 제거할 수 있습니다.

class Bar extends React.Component<> {
 ...
}

아니면 만들어 보세요.foo선택적..

interface BarProps{
  foo?: string;
}

아이디어는 일관성을 구현하는 것입니다.

당신의 경우, 당신은 알 수 없는 명제를 통과하고 있습니다.action구성 요소에 정의되어 있지 않을 수 있습니다.

다음과 같이 구성 요소를 호출할 때<MyComponent {...props} />기본적으로 사용 가능한 모든 소품을 가져오라는 의미입니다.

명시적으로 전화를 걸 때action버팀목 같은.<MyComponent action={this.state.action} />그것은 큰 지방 오류를 던집니다.


언급된 오류는 상당히 악명 높습니다.이러한 오류를 강조하고 가능한 해결책을 공유하는 React 및 TypeScript에 대한 이 디버깅 가이드에서 더 많은 통찰력을 찾을 수 있습니다.

의 구현에 대해 자세히 알아볼 수 있습니다.IntrinsicAttributes그리고.IntrinsicClassAttributes 저장소에.

Typescript's checker.t를 파고드는 것은 integrinalAttributes에 대한 할당이 이루어진 블록을 실행할 필요가 없기 때문에 해당 구성 요소의 호출에 대해 비교할 명시적인 JsxAttributes가 없기 때문에 가능합니다(ComparingJsxAttributes는 false일 수 있습니다).이 경우가 맞는지 확인해야 할 경우 Typescript의 소스 코드를 디버깅해 보십시오.

예를 들어, 여기 유형 스크립트는 구성 요소가 마운트될 때만 분해될 수 있도록 무언가가 전달될 것으로 예상합니다.

<MyComponent {...props} />

그러나 여기서 typescript는 이 .state.action을 정의되지 않은 것으로 간주하거나 유효한 값이 전달될 것인지 확신할 수 없기 때문에 null일 수 있습니다.

<MyComponent action={this.state.action} />

액션 소품의 유형을 제대로 알고 있더라도 말입니다.그것은 여전히 그것이 가치가 있는지 없는지를 알고 그것을 그것으로 봅니다.{}빈 개체이므로 작업에 할당할 수 없습니다.

언급URL : https://stackoverflow.com/questions/59969756/not-assignable-to-type-intrinsicattributes-intrinsicclassattributes-react-js

반응형