반응형
제네릭은 API 응답 데이터를 받아올때 제일 많이 사용된다.
interface PhoneNumberDictionary {
[phone: string]: {
num: number;
};
}
interface Contact {
name: string;
address: string;
phones: PhoneNumberDictionary;
}
// api
// TODO: 아래 함수의 반환 타입을 지정해보세요.
function fetchContacts(): Promise<Contact[]> {
// TODO: 아래 변수의 타입을 지정해보세요.
const contacts: Contact[] = [
{
name: 'Tony',
address: 'Malibu',
phones: {
home: {
num: 11122223333,
},
office: {
num: 44455556666,
},
},
},
{
name: 'Banner',
address: 'New York',
phones: {
home: {
num: 77788889999,
},
},
},
{
name: '마동석',
address: '서울시 강남구',
phones: {
home: {
num: 213423452,
},
studio: {
num: 314882045,
},
},
},
];
return new Promise(resolve => {
setTimeout(() => resolve(contacts), 2000);
});
}
interface PhoneNumberDictionary {
[phone: string]: {
num: number;
};
}
interface Contact {
name: string;
address: string;
phones: PhoneNumberDictionary;
}
interface로 객체의 type을 지정했다.
Contact interface에 들어갈 phones에는 house number, office number 같은 각자 다른 전화번호가 들어올 수 있어
PhoneNumberDictionary Interface에 배열로 지정해놨다.
// api
// TODO: 아래 함수의 반환 타입을 지정해보세요.
function fetchContacts(): Promise<Contact[]> {
// TODO: 아래 변수의 타입을 지정해보세요.
const contacts: Contact[] = [
{
name: 'Tony',
address: 'Malibu',
phones: {
home: {
num: 11122223333,
},
office: {
num: 44455556666,
},
},
},
{
name: 'Banner',
address: 'New York',
phones: {
home: {
num: 77788889999,
},
},
},
{
name: '마동석',
address: '서울시 강남구',
phones: {
home: {
num: 213423452,
},
studio: {
num: 314882045,
},
},
},
];
return new Promise(resolve => {
setTimeout(() => resolve(contacts), 2000);
});
}
fetchContacts함수안에 변수 contents의 타입을 Content 인터페이스로 정의하고 객체를 배열에 넣었다.
fetchContacts 함수의 리턴 값을 제네릭을 사용하여 Promise<Contect[]> 로 정의했다.
이런식으로 제네릭은 API응 답 데이터를 받아올때 많이 사용된다.
반응형
'TypeScript > TypeScript - 기초부터 실전까지' 카테고리의 다른 글
20. map() - 특정 배열을 변환하여 새로운 배열을 만든는 함수 (0) | 2023.10.14 |
---|---|
19. 클래스 선언부 타입 정의 | 메서드 타입 정의 | enum을 이용한 타입 정의 (0) | 2023.10.14 |
17. tsconfig.json, .eslintrc.js 설정 (0) | 2023.10.14 |
16. 제네릭의 타입 제한방법 3가지 | keyof (0) | 2023.10.09 |
15. 제네릭 실전 예제 - DropDown | 인터페이스에 제네릭을 선언하는 방법 (0) | 2023.10.08 |