타입을 왜 제대로 알아야 할까?
- 타입을 명확하게 정의하면 코드의 안정성 및 가독성이 향상된다.
- 잘못된 타입을 사용하면 런타임 오류가 발생할 가능성이 높다.
- 타입 안정성을 확보하면 협업이 쉬워지고, 유지보수 비용이 줄어든다.
TypeScript의 기본 타입
Boolean (true | false
)
- 두 가지 상태(참/거짓)를 표현하는데 사용된다.
function isValidPassword(password: string): boolean {
return password.length >= 8;
}
Number (정수, 실수, 2진수, 8진수, 16진수 등
)
- JavaScript와 다르게 TypeScript에서는 모든 숫자가
number
타입으로 통합된다.
function calculateArea(radius: number): number {
return Math.PI * radius * radius;
}
String (문자열
)
- 작은 따옴표, 큰 따옴표, 백틱(``)을 사용해 문자열을 표현한다.
- 템플릿 리터럴을 활용하면 문자열을 쉽게 조합할 수 있다.
function greet(name: string): string {
return `안녕, ${name}!`;
}
Array (배열
)
- 동일한 타입의 여러 값을 저장할 때 사용된다.
const numbers: number[] = [1, 2, 3, 4, 5];
Tuple (고정된 타입과 순서를 가지는 배열
)
const person: [string, number, boolean] = ['Alice', 25, true];
Enum (상수 값을 정의할 때 사용
)
- 명확하게 관련된 값들을 그룹화하는데 유용하다.
enum UserRole { ADMIN, USER, GUEST }
const user: UserRole = UserRole.ADMIN;
const와 readonly
const
→ 값 재할당이 불가능한 상수
readonly
→ 객체 속성을 변경할 수 없도록 설정
class Person {
readonly name: string;
constructor(name: string) {
this.name = name;
}
}
any vs unknown vs union 타입
- any (
아무 타입이나 저장 가능하지만 지양해야 함
)
- unknown (
any보다 안전하며, 타입 체크 후 사용할 수 있음
)
- union (
여러 타입을 동시에 허용
)
type StringOrNumber = string | number;
function processValue(value: StringOrNumber) {
if (typeof value === 'string') console.log("String:", value);
else console.log("Number:", value);
}