Promise와 enum을 이용한 타입 정의

soohyunee·2023년 5월 26일
0

TypeScript

목록 보기
18/20
post-thumbnail

1. Promise를 이용한 API 함수 타입 정의

function fetchItems(): Promise<string[]> {
	let items: string[] = ['a', 'b', 'c'];
	return new Promise((resolve) => resolve(items));
}

fetchItems();
  • 동기적인 코드에서는 리턴값을 주지 않더라도 기본적으로 타입스크립트에서 타입추론이 가능함
  • 비동기적인 코드에서는 new Promise를 반환하게 되면, Promise을 추론함
  • 비동기 함수를 실행하는 시점에서 타입스크립트가 Promise 안에 들어오는 비동기 코드들에 대해 알 수 없음
  • Promise는 기본적으로 제네릭을 이용해서 타입이 정의가 되어있음
  • Promise를 리턴했을 때, Promise와 제네릭 타입을 함께 정의해주어야 함

2. enum을 이용한 타입 정의

interface PhoneNumberDictionary {
	[phone: string]: {
		num: number;
	};
}

interface Contact {
	name: string;
	address: string;
	phones: PhoneNumberDictionary;
}

enum Phonetype {
	Home = 'home',
	Office = 'office',
	Studio = 'studio',
}
class AddressBook {
	contacts: Contact[] = [];

	constructor() {
		this.fetchData();
	}

	fetchData(): void {
		fetchContacts().then((response) => {
			this.contacts = response;
		});
	}

	findContactByPhone(phoneNumber: number, phoneType: Phonetype): Contact[] {
		return this.contacts.filter((contact) => contact.phones[phoneType].num === phoneNumber);
	}
}

const findPhoneTypeHome = new AddressBook().findContactByPhone(111, Phonetype.Home);
  • 단순히 string 타입을 받을 때, 발생하는 오탈자를 방지하기 위해 변수화해서 타입을 제한
  • 몇 개의 값에 대해서만 파라미터로 받을 때는 enum을 사용하기
  • 왼쪽에는 이넘의 속성, 오른쪽에는 이넘의 값을 명시함
  • string 대신에 제한된 문자열의 집합인 enum을 정의해주기


참고 : 타입스크립트 입문 - 기초부터 실전까지

profile
FrontEnd Developer

0개의 댓글