타입스크립트에서 객체 타입은 특정 프로퍼티와 메서드를 가지는 객체의 구조를 정의하는 데 사용됩니다. 타입스크립트는 정적 타입 언어이므로 객체의 타입을 명시적으로 선언할 수 있고, 그 외에도 다양한 방식으로 객체 타입을 정의할 수 있습니다.
객체 리터럴은 중괄호 {}를 사용하여 객체를 직접 선언하는 방식입니다. 이 방식은 주로 간단한 객체를 생성하거나 인라인으로 타입을 지정할 때 사용됩니다.
let newcomer = {
  name: "Tommy",
  age: 30,
  position: "Frontend"
};
위의 코드에서 신입사원에 대한 정보가 담긴 newcomer는 객체 리터럴 선언을 사용하여 생성된 객체입니다. 타입스크립트는 이 객체의 프로퍼티를 분석하여 해당 변수의 타입을 추론합니다. 이 방식은 간편하지만, 타입스크립트가 타입을 추론할 수 있는 경우에만 유용합니다.
명시적 선언은 타입을 직접 명시하여 객체를 선언하는 방식입니다. 주로 복잡한 객체나 특정한 타입을 가진 객체를 생성할 때 사용됩니다.
interface Developer {
  name: string;
  age: number;
  position: string;
}
let newcomer: Developer = {
  name: "Tommy",
  age: 30,
  position: "Frontend"
};
위의 코드에서 Developer 인터페이스를 사용하여 신입사원의 정보가 담긴 newcomer이라는 객체를 명시적으로 선언했습니다. 이 방식은 객체의 구조를 명확하게 정의하고 타입을 강제할 수 있어 유용합니다. 또한 명시적 선언은 코드의 가독성을 높이고 잠재적인 오류를 감소시키는 데 도움이 됩니다.
이처럼 객체 리터럴 선언 방식은 코드를 간결하게 작성하는 데는 적합하지만, 코드의 가독성과 유지 보수를 위해서는 명시적 선언으로 객체 타입을 정의하는 것이 좋습니다. 두 방식은 상황에 따라 선택되고 사용되며, 코드의 명확성과 유연성을 고려하여 적절한 방법을 선택하는 것이 중요합니다.
타입 별칭(Type Alias)은 사용자가 새로운 타입을 정의할 수 있게 해주는 기능입니다. 주로 코드의 재사용과 유지 보수를 위해 사용하며, 객체 타입 정의에서 타입 별칭은 그 정의를 간단하게 만들어 줄 수 있습니다. 사용자가 정의한 것을 타입으로 사용할 수 있다는 점에서 아래에서 설명할 인터페이스와 유사합니다. 하지만 타입 별칭의 경우 인터페이스와 달리 객체, 원시 타입, 유니온 타입 등을 포함한 모든 타입을 선언할 수 있습니다.
타입 별칭은 type이라는 키워드를 사용하여 정의합니다.
type MyString = string;
type MyNumber = number;
type MyUnion = string | null;
type MyObj = {a: 1} | {b: 2};
type MyTuple = [string, boolean];
기존의 string에 MyString이라는 이름을 붙이는 것과 같이, 타입 별칭은 새로 타입을 정의하여 만들어 내는 것이 아닌 기존의 타입에 새로운 이름을 지정하여 사용하는 방식입니다.
타입 별칭으로 객체 타입을 정의하는 방법은 다음과 같습니다.