4.1 타입스크립트의 객체 타입

타입스크립트에서 객체 타입은 특정 프로퍼티와 메서드를 가지는 객체의 구조를 정의하는 데 사용됩니다. 타입스크립트는 정적 타입 언어이므로 객체의 타입을 명시적으로 선언할 수 있고, 그 외에도 다양한 방식으로 객체 타입을 정의할 수 있습니다.

4.1.1 객체 리터럴 선언

객체 리터럴은 중괄호 {}를 사용하여 객체를 직접 선언하는 방식입니다. 이 방식은 주로 간단한 객체를 생성하거나 인라인으로 타입을 지정할 때 사용됩니다.

let newcomer = {
  name: "Tommy",
  age: 30,
  position: "Frontend"
};

위의 코드에서 신입사원에 대한 정보가 담긴 newcomer는 객체 리터럴 선언을 사용하여 생성된 객체입니다. 타입스크립트는 이 객체의 프로퍼티를 분석하여 해당 변수의 타입을 추론합니다. 이 방식은 간편하지만, 타입스크립트가 타입을 추론할 수 있는 경우에만 유용합니다.

4.1.2 명시적 선언

명시적 선언은 타입을 직접 명시하여 객체를 선언하는 방식입니다. 주로 복잡한 객체나 특정한 타입을 가진 객체를 생성할 때 사용됩니다.

interface Developer {
  name: string;
  age: number;
  position: string;
}

let newcomer: Developer = {
  name: "Tommy",
  age: 30,
  position: "Frontend"
};

위의 코드에서 Developer 인터페이스를 사용하여 신입사원의 정보가 담긴 newcomer이라는 객체를 명시적으로 선언했습니다. 이 방식은 객체의 구조를 명확하게 정의하고 타입을 강제할 수 있어 유용합니다. 또한 명시적 선언은 코드의 가독성을 높이고 잠재적인 오류를 감소시키는 데 도움이 됩니다.

이처럼 객체 리터럴 선언 방식은 코드를 간결하게 작성하는 데는 적합하지만, 코드의 가독성과 유지 보수를 위해서는 명시적 선언으로 객체 타입을 정의하는 것이 좋습니다. 두 방식은 상황에 따라 선택되고 사용되며, 코드의 명확성과 유연성을 고려하여 적절한 방법을 선택하는 것이 중요합니다.

4.2 타입 별칭으로 객체 타입 정의

타입 별칭(Type Alias)은 사용자가 새로운 타입을 정의할 수 있게 해주는 기능입니다. 주로 코드의 재사용과 유지 보수를 위해 사용하며, 객체 타입 정의에서 타입 별칭은 그 정의를 간단하게 만들어 줄 수 있습니다. 사용자가 정의한 것을 타입으로 사용할 수 있다는 점에서 아래에서 설명할 인터페이스와 유사합니다. 하지만 타입 별칭의 경우 인터페이스와 달리 객체, 원시 타입, 유니온 타입 등을 포함한 모든 타입을 선언할 수 있습니다.

4.2.1 기본 정의 방법

타입 별칭은 type이라는 키워드를 사용하여 정의합니다.

type MyString = string;
type MyNumber = number;
type MyUnion = string | null;
type MyObj = {a: 1} | {b: 2};
type MyTuple = [string, boolean];

기존의 stringMyString이라는 이름을 붙이는 것과 같이, 타입 별칭은 새로 타입을 정의하여 만들어 내는 것이 아닌 기존의 타입에 새로운 이름을 지정하여 사용하는 방식입니다.

타입 별칭으로 객체 타입을 정의하는 방법은 다음과 같습니다.