TypeScript 개발 생산성을 높이는 5가지 팁
TypeScript를 사용하면서 개발 생산성을 향상시킬 수 있는 실용적인 팁들을 공유합니다.
2024년 1월 20일4 min read
TypeScript는 JavaScript에 타입 시스템을 추가하여 더 안전하고 유지보수하기 쉬운 코드를 작성할 수 있게 해줍니다. 오늘은 TypeScript 개발 생산성을 높일 수 있는 5가지 실용적인 팁을 공유하겠습니다.
1. 타입 추론 활용하기
TypeScript의 강력한 타입 추론 기능을 활용하면 명시적인 타입 선언을 줄일 수 있습니다:
typescript
1
2
3
4
5
6
7
8
// 굳이 타입을 명시하지 않아도 됩니다
const numbers = [1, 2, 3, 4, 5]; // number[]로 추론
const doubled = numbers.map(n => n * 2); // number[]로 추론
// 함수의 반환 타입도 자동으로 추론됩니다
function createUser(name: string, age: number) {
return { name, age }; // { name: string; age: number }로 추론
}
2. 유틸리티 타입 활용
TypeScript에서 제공하는 유틸리티 타입을 활용하면 타입 정의를 더 간결하게 만들 수 있습니다:
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface User {
id: number;
name: string;
email: string;
password: string;
}
// Partial: 모든 속성을 선택적으로 만들기
type UpdateUser = Partial<User>;
// Omit: 특정 속성 제외하기
type PublicUser = Omit<User, 'password'>;
// Pick: 특정 속성만 선택하기
type UserCredentials = Pick<User, 'email' | 'password'>;
3. 타입 가드 활용
타입 가드를 사용하면 런타임에서도 타입 안정성을 보장받을 수 있습니다:
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 사용자 정의 타입 가드
function isString(value: unknown): value is string {
return typeof value === 'string';
}
// in 연산자를 활용한 타입 가드
interface Cat {
meow: () => void;
}
interface Dog {
bark: () => void;
}
function makeSound(animal: Cat | Dog) {
if ('meow' in animal) {
animal.meow(); // Cat으로 타입 좁히기
} else {
animal.bark(); // Dog로 타입 좁히기
}
}
4. 제네릭 활용하기
제네릭을 사용하면 재사용 가능한 컴포넌트를 만들 수 있습니다:
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 제네릭 함수
function getFirstElement<T>(arr: T[]): T | undefined {
return arr[0];
}
// 제네릭 인터페이스
interface ApiResponse<T> {
data: T;
status: number;
message: string;
}
// 사용 예시
const userResponse: ApiResponse<User> = {
data: { id: 1, name: 'John', email: 'john@example.com', password: 'secret' },
status: 200,
message: 'Success'
};
5. 템플릿 리터럴 타입 활용
템플릿 리터럴 타입을 사용하면 문자열 타입을 더 정교하게 정의할 수 있습니다:
typescript
1
2
3
4
5
6
7
8
9
10
11
type Theme = 'light' | 'dark';
type Size = 'sm' | 'md' | 'lg';
// 템플릿 리터럴 타입
type ButtonClass = `btn-${Theme}-${Size}`;
// 결과: "btn-light-sm" | "btn-light-md" | "btn-light-lg" | "btn-dark-sm" | "btn-dark-md" | "btn-dark-lg"
// 실제 사용
function getButtonClass(theme: Theme, size: Size): ButtonClass {
return `btn-${theme}-${size}`;
}
결론
TypeScript는 강력한 기능들을 제공하며, 이를 잘 활용하면 더 안전하고 생산적인 개발이 가능합니다. 위에서 소개한 팁들을 프로젝트에 적용해보면서 TypeScript의 장점을 최대한 활용해보세요!
다음 포스트에서는 TypeScript와 React를 함께 사용할 때의 베스트 프랙티스에 대해 다루도록 하겠습니다.