본문 바로가기

Typescript

[typescript] 같은 interface인데 이름만 다르게 쓰고 싶을때 ! 인터페이스 복사하기 (type이용하기)

이슈

interface Code {
  code: string;
  codeName: string;
}

interface BasePageInfo {
  code: string;
  codeName: string;
}
위에 2개의 interface를 보면 안에 내용은 같지만 이름이 달라야하는 상황이다. 은근 이런 상황이 많았는데 이럴때 합치는 법을 몰라 한참 헤맸다..

 

결 type 

interface Code {
  code: string;
  codeName: string;
}
	
type BasePageInfo = Code;
type 새로운이름 = 복사할코드 로 해결하였다.

 

 


다른예시

type을 이용하여 아래 긴 소스를 더 간단하게 줄일 수도 있다.


기존소스

//기존 소스
interface ExcelCategoryPayloadItem {
  categoryCode: string;
  categoryDepth: number | null;
  createDate: string;
  parentCategoryStandardSeq: number | null;
}

interface ExcelCategoryPayload {
  list: ExcelCategoryPayloadItem[]
}

interface ExcelMarketPayloadItem {
  marketCode: string;
  categoryDepth: number | null;
  createDate: string;
}

interface ExcelMarketPayload {
  list: ExcelMarketPayloadItem[]
}

 

수정한소스

interface ExcelPayload<T> {
  list: T[]
}

type ExcelCategoryPayload = ExcelPayload<ExcelCategoryPayloadItem>;
type ExcelMarketPayload = ExcelPayload<ExcelMarketPayloadItem>;
반응형