[Typescript] TypeScript 타입 종류

해피몬·2024년 2월 24일
post-thumbnail

TypeScript 타입이란? 🤔

TypeScript는 JavaScript에 정적 타입을 추가하여, 코드의 타입 오류를 컴파일 단계에서 미리 찾아주는 정적 타입 언어임. TypeScript의 타입 시스템 덕분에 코드의 안전성과 가독성이 높아지고, 개발 중 오류를 쉽게 파악할 수 있음. JavaScript가 동적 타입 언어로서 런타임에서 타입을 결정하는 것과 달리, TypeScript는 컴파일 타임에 변수의 타입을 정적 검사하여 오류를 예방함.

TypeScript의 주요 타입들 🛠️

TypeScript에는 여러 가지 기본 타입과 고급 타입이 있어 코드의 유연성을 높이면서도 안전하게 작성할 수 있음.

기본 타입 (Primitive Types)

기본 타입은 JavaScript의 원시 타입에 대응되며, TypeScript에서 자주 사용되는 가장 기본적인 타입들임.

  • string: 문자열 타입. 예) 'hello', "world"
  • number: 숫자 타입으로, 정수와 실수 모두 포함. 예) 42, 3.14
  • boolean: 논리 타입. 예) true, false
  • null: 값이 없는 상태를 나타냄.
  • undefined: 정의되지 않은 상태를 나타냄.
  • symbol: 유니크하고 변경 불가능한 값을 생성하는 타입.
  • bigint: 큰 정수를 다루는 타입으로, 일반적인 number 타입보다 큰 정수 처리에 유용함.

배열 타입 (Array Type)

배열 타입은 배열 안의 요소들이 특정 타입을 가지도록 제한함. 배열 요소의 타입을 type[] 형식으로 명시함.

let numbers: number[] = [1, 2, 3, 4];
let names: string[] = ['Alice', 'Bob', 'Charlie'];

또는 Array<type> 형태로 작성할 수도 있음.

let scores: Array<number> = [98, 85, 91];

객체 타입 (Object Type)

객체 타입을 정의할 때는 각 속성의 이름과 타입을 { 속성: 타입 } 형식으로 지정함.

let user: { name: string; age: number } = {
  name: 'Alice',
  age: 30,
};

함수 타입 (Function Type)

함수의 매개변수와 반환값의 타입을 지정할 수 있음. (매개변수: 타입) => 반환 타입 형식으로 함수 타입을 정의함.

function add(x: number, y: number): number {
  return x + y;
}

const greet: (name: string) => string = (name) => `Hello, ${name}!`;

TypeScript의 고급 타입들 🎩

TypeScript는 기본 타입 외에도 코드의 유연성과 재사용성을 높이는 다양한 고급 타입을 제공함.

유니언 타입 (Union Type)

유니언 타입은 변수에 여러 타입 중 하나가 될 수 있도록 지정함. | 연산자를 사용하여 작성함.

let id: number | string;
id = 101;
id = 'A101'; // 둘 다 허용됨

교차 타입 (Intersection Type)

교차 타입은 여러 타입을 하나로 결합하여 모든 속성을 포함하도록 하는 타입임. & 연산자를 사용하여 작성함.

type Person = { name: string };
type Employee = { employeeId: number };

type Staff = Person & Employee;

let staffMember: Staff = {
  name: 'Alice',
  employeeId: 123,
};

제네릭 타입 (Generics)

제네릭은 타입을 파라미터로 받아 다양한 타입에 대해 동작하는 코드를 작성할 수 있게 해 줌. 특히 함수나 클래스에서 유연하고 재사용 가능한 코드를 작성할 때 유용함.

function identity<T>(value: T): T {
  return value;
}

console.log(identity<number>(42)); // 숫자 타입
console.log(identity<string>('Hello')); // 문자열 타입

타입 별칭 (Type Alias)

타입 별칭은 특정 타입을 이름으로 정의할 수 있는 기능임. type 키워드를 사용해 더 간결하게 코드를 작성할 수 있음.

type User = {
  name: string;
  age: number;
};

let newUser: User = { name: 'Alice', age: 25 };

인덱스드 타입 (Indexed Type)

인덱스드 타입은 객체의 속성을 동적으로 정의할 때 사용하며, 속성의 키와 값의 타입을 지정함.

type Dictionary = {
  [key: string]: string;
};

let colorCodes: Dictionary = {
  red: '#FF0000',
  green: '#00FF00',
  blue: '#0000FF',
};
profile
슬기로운개발생활🤖

0개의 댓글