문제상황
TS2322: Type '{ data: ReservationDataType[]; }' is not assignable to type 'IntrinsicAttributes & ReservationDataType[]'.
Property 'data' does not exist on type 'IntrinsicAttributes & ReservationDataType[]'.
// 부모 컴포넌트
import React from "react";
import RenderComponent from "./RenderComponent";
import type { ReservationDataType } from "interface/interface";
const ReservationList = () => {
// api 호출 & Save Data
const data: ReservationDataType[] = [
{
reservationNo: "yyyyMMdd######01",
channel: "11번가_티켓",
orderNo: "yyyyMMdd01",
orderName: "김기동",
productTitle: "상품이름01",
ticket: "1번티켓" + " / " + "1개" + "\n" + "2번티켓" + " / " + "2개",
price: 110000,
paidPrice: 100000,
orderTime: "2022.01.01 01:01",
reservationStatus: "paid",
ticektStatus: "used",
}
...
];
return (
<>
<RenderComponent data={data} />
</>
);
};
export default ReservationList;
// 자식 컴포넌트
import React from "react";
import {
DataTable,
HeaderWithButton,
SearchBox,
TotalCountWithDescription,
} from "../../../components/molecule";
import type { ReservationDataType } from "interface/interface";
const RenderComponent = (data: ReservationDataType[]) => {
return (
<>
<DataTable
data={data?.map((item, index) => {
return { ...item, key: index };
})}
/>
</>
);
};
export default RenderComponent;
원인
자식 컴포넌트에 있는 RenderComponent = (data: ReservationDataType[]) 에 이슈가 있음.
props 객체를 그대로 전달(부모->자식) 한다.
그래서, 부모 자식간에 Type이 맞질 않게 된다.
해결방안
아래와 같이 고쳐주면 해결된다.
RenderComponent = ({ data }: { data: ReservationDataType[] })
// or
RenderComponent = ({ data }: { data: Array<ReservationDataType> })
이렇게 해야, 구조분해해서 전달받게 된다.
props를 그대로 전달받게 되면, render에 사용하는 모든 변수를 any 타입으로 전달해주거나 타입을 설정해줘야 한다.
위에 처럼 구조분해할당을 받아서 props를 상속받는 게 훨씬편하다.
참고
1. 타입스크립트 React props 전달하는 방법 및 IntrinsicAttributes 오류 https://cpro95.tistory.com/656?category=929244
타입스크립트 React props 전달하는 방법 및 IntrinsicAttributes 오류 해결
안녕하세요? 오늘은 타입스크립트로 리액트 코드를 짤 때 하위 컴포넌트(child componet)에 Props를 전달하는 제대로 된 방법을 알아보겠습니다. 그냥 자바스크립트로 작성하면 크게 문제가 안되지만
cpro95.tistory.com
2.타입스크립트 React props IntrinsicAttributes 오류 https://velog.io/@yeum0523/%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-React-props-IntrinsicAttributes-%EC%98%A4%EB%A5%98
타입스크립트 React props IntrinsicAttributes 오류
일단 props로 전달해준 메뉴 리스트는 다음과 같습니다.처음에 type 문제 인줄 알고 유심히 봤는데 타입 정의는 문제된게 없었습니다..하지만 알고 보니 함수형 컴포넌트인 프리젠테이셔널 컴포넌
velog.io
'React & TypeScript > TypeScript' 카테고리의 다른 글
[ESLint] naming-convention 설정방법 (0) | 2023.11.23 |
---|---|
[TypeScript] GENERIC Basic (그래서, T야?) (0) | 2023.08.22 |
비공개 - [TypeScript] 활용법 Basic (이 건 뭐고, 저 건 또 뭐야? 싶을 때 보는) (0) | 2023.07.10 |
[TypeScript] as 사용에 대한 이해 (feat. Type Assertions) (1) | 2022.12.27 |
[TypeScript] Tip - 자동으로 Type 추출 (0) | 2022.12.19 |
[React / TypeScript / API] API 구조 작성은 이렇게 한다. (0) | 2022.12.16 |
[React / TypeScript] interface로 타입 정의 중 발생한 이슈 (useParams, Params) - TS2344 (0) | 2022.12.09 |
댓글