[typescript] 타입 별칭과 인터페이스를 사용하여 리액트 컴포넌트 타입 정의하기

리액트 애플리케이션을 개발할 때, 컴포넌트의 Props와 State에 대한 타입을 명확히 정의하는 것은 중요합니다. 이를 통해 코드의 가독성을 높이고 오류를 방지할 수 있습니다. 이번 포스트에서는 타입 별칭과 인터페이스를 사용하여 리액트 컴포넌트의 타입을 정의하는 방법에 대해 알아보겠습니다.

1. 타입 별칭(Type Alias)을 사용한 컴포넌트 타입 정의

타입 별칭은 새로운 타입을 정의하기 위해 type 키워드를 사용합니다. 이를 활용하여 Props와 State의 타입을 간결하게 정의할 수 있습니다.

예를 들어, 다음과 같이 ButtonProps라는 타입 별칭을 정의할 수 있습니다.

type ButtonProps = {
  text: string;
  onClick: () => void;
  disabled?: boolean;
}

위의 예제에서는 ButtonProps 타입을 정의하여 버튼 컴포넌트의 Props 타입을 명시했습니다.

2. 인터페이스(Interface)를 사용한 컴포넌트 타입 정의

인터페이스는 객체의 타입을 정의하기 위해 사용됩니다. 리액트 컴포넌트의 Props와 State를 정의할 때 인터페이스를 사용하여 각각의 타입을 명확히 정의할 수 있습니다.

예를 들어, 다음과 같이 InputProps라는 인터페이스를 정의할 수 있습니다.

interface InputProps {
  value: string;
  onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
  disabled?: boolean;
}

위의 예제에서는 InputProps 인터페이스를 사용하여 입력 컴포넌트의 Props 타입을 정의했습니다.

3. 타입 별칭과 인터페이스의 활용

타입 별칭과 인터페이스는 각각의 상황에 맞게 활용할 수 있습니다. 타입 별칭은 Union, Intersection 등과 함께 복잡한 타입을 정의할 때 유용하며, 인터페이스는 클래스나 객체의 구조를 정의할 때 유용합니다.

리액트 컴포넌트에서는 일반적으로 Props를 정의할 때는 인터페이스를, State를 정의할 때는 타입 별칭을 사용하는 것이 일반적인 관례입니다.

결론

타입 별칭과 인터페이스를 사용하여 리액트 컴포넌트의 타입을 명확하게 정의함으로써 코드의 가독성을 높이고 유지보수성을 개선할 수 있습니다. 적절한 상황에 맞게 타입 별칭과 인터페이스를 활용하여 개발 효율을 높이는 것이 중요합니다.

이상으로 타입 별칭과 인터페이스를 사용하여 리액트 컴포넌트 타입을 정의하는 방법에 대해 알아보았습니다.

참고문헌: 타입스크립트 핸드북 - 인터페이스, 타입스크립트 핸드북 - 타입 별칭