[TypeScript] Type과 Interface
사용자 정의 형식을 만들기 위한 도구 Type과 Interface에 대해 알아보겠습니다.
Type
새로운 타입을 정의할 때 사용됩니다.
기존에 존재하는 타입들을 조합하거나 별칭을 지어주는 데 사용할 수 있습니다.
string, null, number에 대한 타입을 정의할 수 있습니다.
오직 male 또는 female 중 하나의 값만 가질 수 있도록 문자열 리터럴 유니온 타입으로도 정의가 가능합니다.
이렇게 지정한 타입은 아래처럼 사용할 수 있습니다.
지정해 둔 string 값이 아니면 오류가 나타나는 것도 확인할 수 있습니다.
object도 type을 쓰면 선언할 수 있습니다.
예를 들어 idoltype을 정의해 보겠습니다.
object타입에 string과 number가 존재하도록 선언해 줄 수 있습니다.
정의한 객체 중에 optional 하게 값을 주고 싶을 때는 아래와 같이 물음표를 변수 옆에 붙여줍니다.
그럼 optinal 하게 정의된 year에 데이터를 입력하지 않아도 에러가 발생하지 않습니다.
Interface
또 다른 객체를 나타내는 데 사용됩니다.
객체의 구조를 정의하고 해당 구조를 따르는 객체를 만들 때 사용할 수 있습니다.
Interface는 object처럼 선언해 주면 사용할 수 있습니다.
그리고 인터페이스를 선언하는데 위에서 직접 만든 타입을 활용해서 만들 수 있습니다.
Interface도 optional 하게 객체를 선언할 수 있습니다.
type을 정의할 때와 마찬가지로 변수 이름 옆에 물음표를 붙여주면 됩니다.
Type과 Interface 차이점
Type | Interface |
기존 타입에 별칭을 부여할 때 사용되며 새로운 타입을 정의 | 새로운 타입을 만드는 것이 아니라 객체의 구조를 정의 |
유니온, 인터섹션, 튜플 등의 타입을 다양하게 조작하고 조합할 수 있음 | 제한 |
보통 유니온 타입, 튜플, 리터럴 타입 등을 정의할 때 주로 사용 | 주로 객체 형태를 정의하는 데 사용 |
확장은 불가능하지만 유니온 등의 조합으로 타입을 만들 수 있음. | 상속이 가능하여 확장이 용이 |
사용 목적에 따라 type과 interface를 적절하게 선택하여 사용하는 것이 좋습니다.