이슈
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>;
반응형
'Typescript' 카테고리의 다른 글
[typescript] emit 에 타입지정하기 (ts파일 분리) (0) | 2022.01.25 |
---|---|
[typescript] 컴포넌트 간에 interface를 export하고 import 했는데 아무리해도 오류가 날때..! (0) | 2022.01.23 |
[typescript] 타입선언은 대체 어디에 ? ? 타입이 똑같아도 모든파일에서 다 ? (컴포넌트간 타입선언 해보기) (0) | 2022.01.23 |
[typescript] ts파일안에 html 파일 import 할때 타입선언하기 (InstaceType) (0) | 2022.01.17 |
[typescript 기본] 타입스크립트의 모듈화 ( == es6 modules) + 예제 (0) | 2022.01.16 |