내가 보려고 적은 TypeScript 핵심 요약

Joey·2025년 1월 6일
0

TypeScript 정리

TypeScript는 정적 타입을 지원하여 코드의 안정성과 가독성을 높이는 데 도움을 줍니다.


01. Type Annotation

타입 에너테이션(Type Annotation)은 변수, 매개변수, 반환값 등에 타입을 명시적으로 지정하는 방식입니다. TypeScript의 강력한 타입 시스템은 코드를 작성하는 동안 타입 오류를 사전에 방지합니다.

  • 변수 타입 지정
let age: number = 25; // 숫자 타입 지정
let name: string = 'John'; // 문자열 타입 지정
let isStudent: boolean = true; // 불리언 타입 지정
  • 함수 반환 타입
function greet(name: string): string {
  return `Hello, ${name}!`;
}
  • 암시적 타입 추론
    타입을 명시하지 않아도 초기 값에 따라 타입이 추론됩니다.
let value = 10; // TypeScript가 자동으로 number 타입으로 추론

02. Function Annotation

함수에 입력(매개변수)출력(반환값)의 타입을 명시적으로 지정하여 예상치 못한 동작을 방지할 수 있습니다.

  • 매개변수와 반환값
function add(a: number, b: number): number {
  return a + b;
}
  • 화살표 함수
const subtract = (a: number, b: number): number => a - b;
  • 선택적 매개변수(Optional Parameter)
function logMessage(message: string, userId?: number): void {
  console.log(`${message} - User: ${userId || 'Guest'}`);
}

03. Object Annotation

객체의 구조를 정의하거나 타입 별칭(Type Alias)을 사용하여 가독성을 높이고 재사용성을 개선할 수 있습니다.

  • 객체 타입 지정
let user: { name: string; age: number } = { name: 'Alice', age: 30 };
  • 타입 별칭(Type Alias)
type User = {
  name: string;
  age: number;
  job?: string; // 선택적 프로퍼티
};

let admin: User = { name: 'Admin', age: 40 };
  • 읽기 전용(Readonly) 프로퍼티
type Product = {
  readonly id: string;
  name: string;
};

const item: Product = { id: 'p-101', name: 'Laptop' };
// item.id = 'p-102'; // 오류 발생: 읽기 전용

04. Array Annotation

배열 요소의 타입을 지정하여 일관성을 유지합니다.

  • 단일 타입 배열
let numbers: number[] = [1, 2, 3];
let strings: string[] = ['a', 'b', 'c'];
  • 제네릭 방식
let booleans: Array<boolean> = [true, false, true];
  • 다차원 배열
let matrix: number[][] = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

05. Union Annotation

유니언 타입(Union Type)을 사용하여 여러 타입 중 하나를 허용합니다.

  • 유니언 타입
let value: string | number;
value = 'hello';
value = 42;
  • 유니언 타입과 배열
let mixedArray: (string | number)[] = [1, 'two', 3];
  • null 및 undefined 허용
let nullableValue: string | null = null;

06. Tuples & Enums

튜플(Tuple)열거형(Enum)은 고정된 구조와 명명된 상수 집합을 정의하는 데 유용합니다.

  • 튜플
type HTTP_Response = [number, string];
let success: HTTP_Response = [200, 'OK'];
let error: HTTP_Response = [404, 'Not Found'];
  • 열거형
enum Role {
  ADMIN,
  USER,
  GUEST,
}

let userRole: Role = Role.USER;
  • 열거형 값에 문자열 할당
enum Status {
  SUCCESS = 'SUCCESS',
  FAILURE = 'FAILURE',
}

let currentStatus: Status = Status.SUCCESS;

07. Interfaces

인터페이스(Interface)는 객체의 구조를 정의하거나 클래스와 협력하는 데 사용됩니다.

객체 타입 정의

interface User {
  name: string;
  age: number;
  job?: string; // 선택적 프로퍼티
}

let user: User = { name: 'John', age: 25 };

함수 타입 정의

interface Greeter {
  (name: string): string;
}

const greeter: Greeter = (name) => `Hello, ${name}!`;

클래스와 인터페이스

interface Shape {
  area(): number;
}

class Circle implements Shape {
  constructor(public radius: number) {}
  area(): number {
    return Math.PI * this.radius ** 2;
  }
}
profile
멋쟁이사자처럼 프론트엔드 부트캠프 12기

0개의 댓글