안좋은 예:
function between<T>(a1: T, a2: T, a3: T): boolean {
return a2 <= a1 && a1 <= a3;
}
좋은 예:
function between<T>(value: T, left: T, right: T): boolean {
return left <= value && value <= right;
}
제네릭(Generics) : 타입을 마치 함수의 파라미터처럼 사용하는 것
function getText<string>(text: string): string { return text; } // <string> : 입력 값 타입 // (): string : 반환 값 타입
좋은 예:
type Customer = {
generationTimestamp: Date;
modificationTimestamp: Date;
recordId: number;
}
안좋은 예:
function getUserInfo(): User;
function getClientDetails(): User;
function getCustomerData(): User;
좋은 예:
function getUser(): User;
안좋은 예:
// 86400000이 도대체 뭐지?
setTimeout(restart, 86400000);
좋은 예:
// 대문자로 이루어진 상수로 선언하세요.
const MILLISECONDS_IN_A_DAY = 24 * 60 * 60 * 1000;
setTimeout(restart, MILLISECONDS_IN_A_DAY);
안좋은 예:
declare const users: Map<string, User>;
for (const keyValue of users) {
// users 맵을 순회
}
좋은 예:
declare const users: Map<string, User>;
for (const [id, user] of users) {
// users 맵을 순회
}
declare
- 타입스크립트 컴파일러에게 해당 변수가 어딘가에 선언되어 있다고 알려주는 행위.
- 전역변수를 사용할 때도 되고 .d.ts 파일을 만들때도 사용된다.
명시적인 것이 암시적인 것보다 좋다. 명료하게 작성하자.
안좋은 예:
const u = getUser();
const s = getSubscription();
const t = charge(u, s);
좋은 예:
const user = getUser();
const subscription = getSubscription();
const transaction = charge(user, subscription);
클래스/타입/객체의 이름에 의미가 담겨있다면, 변수 이름에서 반복하지 말자.
안좋은 예:
type Car = {
carMake: string;
carModel: string;
carColor: string;
}
function print(car: Car): void {
console.log(`${car.carMake} ${car.carModel} (${car.carColor})`);
}
좋은 예:
type Car = {
make: string;
model: string;
color: string;
}
function print(car: Car): void {
console.log(`${car.make} ${car.model} (${car.color})`);
}
viod : 비어있다는 의미.
- 타입스크립트는 function의 parameter와 return value도 타입을 명시해줘야 하는데, 주로 return value가 없을 때 void를 활용한다.
기본 매개변수는 short circuiting보다 보통 명료하다.
안좋은 예:
function loadPages(count?: number) {
const loadCount = count !== undefined ? count : 10;
// ...
}
좋은 예:
function loadPages(count: number = 10) {
// ...
}
enum을 사용하자예를 들어, 값 자체보다 값이 구별되어야 할 때와 같이 코드의 의도를 알려줄 때 enum을 사용하면 된다.
안좋은 예:
const GENRE = {
ROMANTIC: 'romantic',
DRAMA: 'drama',
COMEDY: 'comedy',
DOCUMENTARY: 'documentary',
}
projector.configureFilm(GENRE.COMEDY);
class Projector {
// Projector의 선언
configureFilm(genre) {
switch (genre) {
case GENRE.ROMANTIC:
// 실행되어야 하는 로직
}
}
}
좋은 예:
enum GENRE {
ROMANTIC,
DRAMA,
COMEDY,
DOCUMENTARY,
}
projector.configureFilm(GENRE.COMEDY);
class Projector {
// Projector의 선언
configureFilm(genre) {
switch (genre) {
case GENRE.ROMANTIC:
// 실행되어야 하는 로직
}
}
}
참고