본문 바로가기
JavaScript/TypeScript

기본 타입 선언 예제(TypeScript)

by GangDev 2024. 12. 19.

기본 타입 선언 예제

숫자, 문자열, 불리언 타입 선언

타입스크립트에서 기본적인 원시 타입은 다음과 같이 선언할 수 있습니다:

// 숫자 타입
let num: number = 42;

// 문자열 타입
let str: string = "Hello, TypeScript";

// 불리언 타입
let isAdmin: boolean = false;

// 타입 추론
let inferredNum = 123; // 타입스크립트는 이 변수의 타입을 number로 추론합니다.
let inferredStr = "Inferred"; // 타입스크립트는 이 변수의 타입을 string으로 추론합니다.

배열과 튜플 타입 사용법

배열과 튜플은 다음과 같이 선언할 수 있습니다:

// 숫자 배열
let numbers: number[] = [1, 2, 3];

// 문자열 배열
let fruits: string[] = ['apple', 'banana', 'cherry'];

// 튜플 (고정 길이의 배열)
let tuple: [string, number] = ['tuple', 42];

// 제네릭 배열
let genericArray: Array<boolean> = [true, false, true];

// 읽기 전용 배열
let readonlyArray: ReadonlyArray<number> = [1, 2, 3];
readonlyArray[0] = 10; // Error: Cannot assign to '0' because it is a read-only property.

객체 타입 정의 및 사용

객체 타입은 다음과 같이 정의하고 사용할 수 있습니다:

// 간단한 객체 타입
let person: { name: string; age: number } = {
  name: "John Doe",
  age: 30
};

// 인터페이스로 객체 타입 정의
interface Employee {
  id: number;
  name: string;
  department: string;
}

let employee: Employee = {
  id: 101,
  name: "Jane Smith",
  department: "HR"
};

// 선택적 속성
interface OptionalPerson {
  name: string;
  age?: number;
}

let optionalPerson: OptionalPerson = {
  name: "Mike Brown"
};

// 읽기 전용 속성
interface ReadOnlyPerson {
  readonly name: string;
  age: number;
}

let readOnlyPerson: ReadOnlyPerson = {
  name: "Emily Chen",
  age: 25
};
readOnlyPerson.name = "Sarah Lee"; // Error: Cannot assign to 'name' because it is a read-only property.

이러한 기본 타입 선언을 통해 타입스크립트는 코드의 안정성을 높이고 개발자의 실수를 줄일 수 있습니다. 또한, IDE의 자동 완성 기능과 타입 검사를 통해 개발 생산성을 크게 향상시킬 수 있습니다.

추가 팁:

  1. 타입 어노테이션은 필수는 아니지만, 복잡한 타입이나 함수 시그니처에서는 명시적으로 작성하는 것이 좋습니다.
  2. 인터페이스는 객체의 구조를 정의하는 데 유용하며, 재사용 가능합니다.
  3. 유니온 타입과 인터섹션 타입을 사용하여 더 복잡한 타입을 표현할 수 있습니다:
let unionType: string | number = "Hello";
unionType = 42; // OK

interface Square {
  sideLength: number;
}

interface Circle {
  radius: number;
}

type Shape = Square & Circle;
let shape: Shape = {
  sideLength: 10,
  radius: 5
};
  1. 타입 별칭(type alias)은 복잡한 타입을 재사용 가능한 이름으로 정의할 수 있게 해줍니다:
type Point = {
  x: number;
  y: number;
};

let point: Point = { x: 10, y: 20 };

이러한 기본 타입 선언과 함께 타입스크립트의 고급 기능들을 결합하면 더욱 강력하고 안정적인 코드를 작성할 수 있습니다.