728x90
반응형
단순히 유니온 타입을 사용했을 때 각각의 interface 타입정의가 늘어난다.
interface Email {
value: string;
selected: boolean;
}
const emails: Email[] = [
{ value: "naver.com", selected: true },
{ value: "gmail.com", selected: false },
{ value: "hanmail.net", selected: false },
];
interface ProdcutNum {
value: number;
selected: boolean;
}
const numberOfProducts: ProdcutNum[] = [
{ value: 1, selected: true },
{ value: 2, selected: false },
{ value: 3, selected: false },
];
function createDropdownItem(
// 유니온 타입 활용
item:
// | { value: string; selected: boolean }
// | { value: number; selected: boolean }
Email | ProdcutNum
) {
const option = document.createElement("option");
option.value = item.value.toString();
option.innerText = item.value.toString();
option.selected = item.selected;
return option;
}
// NOTE: 이메일 드롭 다운 아이템 추가
emails.forEach(function (email) {
const item = createDropdownItem(email);
// const selectTag = document.querySelector("#email-dropdown");
// selectTag.appendChild(item);
});
numberOfProducts.forEach((product) => {
const item = createDropdownItem(product);
});
interface에서 제네릭을 사용할 때는 type의 매개변수를 받는 자리라고 생각하면 쉽다. 해당 매개변수를 사용할 type으로 지정해준다.
export interface IPagenation {
list: any[]
}
export interface IPostPagenation {
list:any[]
}
const getPost = () => {
const postPagenation: IPostPagenation = {} as IPostPagenation;
}
export interface IpostModel {
id:number
title:string
content: string
}
export interface IPostPagenation{
list:IpostModel[]
}
const getPost = () => {
const postPagenation: IPostPagenation = {
list:[
{id:1, title:'title1', content:'content1'}
]
}
postPagenation.list
};
export interface IPagenation<T> {
list: T[]
}
import {IPagenation} from './pagenation.type'
export interface IpostModel {
id:number
title:string
content: string
}
export interface IPostPagenation extends IPagenation<IpostModel>{}
export interface INoticeModel{
id:number
notice: string
}
// export interface INoticePageNation {
// list: INoticeModel[]
// }
export interface INoticePageNation extends IPagenation<INoticeModel>{}
728x90
'programming language > TypeScript' 카테고리의 다른 글
제네릭(Generics) 재 정리!! (0) | 2022.12.28 |
---|---|
제네릭 화살표함수 (0) | 2022.12.22 |
ts에서 class를 사용할 때 (0) | 2022.12.14 |
enum 살펴보기 (1) | 2022.12.07 |
연산자를 이용한 타입 정의_유니온, 인터섹션 (1) | 2022.12.06 |
댓글