
TypeScript는 JavaScript에 정적 타입을 추가하여, 코드의 타입 오류를 컴파일 단계에서 미리 찾아주는 정적 타입 언어임. TypeScript의 타입 시스템 덕분에 코드의 안전성과 가독성이 높아지고, 개발 중 오류를 쉽게 파악할 수 있음. JavaScript가 동적 타입 언어로서 런타임에서 타입을 결정하는 것과 달리, TypeScript는 컴파일 타임에 변수의 타입을 정적 검사하여 오류를 예방함.
TypeScript에는 여러 가지 기본 타입과 고급 타입이 있어 코드의 유연성을 높이면서도 안전하게 작성할 수 있음.
기본 타입은 JavaScript의 원시 타입에 대응되며, TypeScript에서 자주 사용되는 가장 기본적인 타입들임.
배열 타입은 배열 안의 요소들이 특정 타입을 가지도록 제한함. 배열 요소의 타입을 type[] 형식으로 명시함.
let numbers: number[] = [1, 2, 3, 4];
let names: string[] = ['Alice', 'Bob', 'Charlie'];
또는 Array<type> 형태로 작성할 수도 있음.
let scores: Array<number> = [98, 85, 91];
객체 타입을 정의할 때는 각 속성의 이름과 타입을 { 속성: 타입 } 형식으로 지정함.
let user: { name: string; age: number } = {
name: 'Alice',
age: 30,
};
함수의 매개변수와 반환값의 타입을 지정할 수 있음. (매개변수: 타입) => 반환 타입 형식으로 함수 타입을 정의함.
function add(x: number, y: number): number {
return x + y;
}
const greet: (name: string) => string = (name) => `Hello, ${name}!`;
TypeScript는 기본 타입 외에도 코드의 유연성과 재사용성을 높이는 다양한 고급 타입을 제공함.
유니언 타입은 변수에 여러 타입 중 하나가 될 수 있도록 지정함. | 연산자를 사용하여 작성함.
let id: number | string;
id = 101;
id = 'A101'; // 둘 다 허용됨
교차 타입은 여러 타입을 하나로 결합하여 모든 속성을 포함하도록 하는 타입임. & 연산자를 사용하여 작성함.
type Person = { name: string };
type Employee = { employeeId: number };
type Staff = Person & Employee;
let staffMember: Staff = {
name: 'Alice',
employeeId: 123,
};
제네릭은 타입을 파라미터로 받아 다양한 타입에 대해 동작하는 코드를 작성할 수 있게 해 줌. 특히 함수나 클래스에서 유연하고 재사용 가능한 코드를 작성할 때 유용함.
function identity<T>(value: T): T {
return value;
}
console.log(identity<number>(42)); // 숫자 타입
console.log(identity<string>('Hello')); // 문자열 타입
타입 별칭은 특정 타입을 이름으로 정의할 수 있는 기능임. type 키워드를 사용해 더 간결하게 코드를 작성할 수 있음.
type User = {
name: string;
age: number;
};
let newUser: User = { name: 'Alice', age: 25 };
인덱스드 타입은 객체의 속성을 동적으로 정의할 때 사용하며, 속성의 키와 값의 타입을 지정함.
type Dictionary = {
[key: string]: string;
};
let colorCodes: Dictionary = {
red: '#FF0000',
green: '#00FF00',
blue: '#0000FF',
};