타입 별칭
// 타입 별칭(Alias), 별명
// type 명령어를 이용해 사용가능
type TypeA = string; // string의 별명을 만들어주는 것
type TypeB = string | number | boolean;
// 타입 별칭은 기본적으로 단일 타입보다는 유니온이나 intersection을 이용해 재사용을 하는 것에 사용
type User = {
name: string
age:number
isValid: boolean
} | [string, number, boolean] // 객체나 튜플로 지정 가능한 타입을 만들어줌
const userA: User = {
name: 'siuuu',
age:85,
isValid: false
}
const userB:User = ['ronaldo', 36, true]
function someFunc(param: TypeB): TypeA {
switch (typeof param) {
case 'string': return param.toUpperCase()
case 'number': return param.toFixed(2)
default: return 'true'
// boolean 타입 true 또는 false를 반환하면 에러 발생.
// 함수에서 typeA를 반환하겠다고 했기 때문인데, TypeA는 문자열을 의미하기 때문
}
}
타입 별칭은 type 키워드를 이용해 타입의 다른 이름을 만들어주는 기능을 한다. 단독으로 사용하기보다는 union이나 intersection을 이용해 여러 타입을 묶어 사용하는 경우가 많다.
타입 별칭 vs 인터페이스
// 타입 별칭 vs 인터페이스
// 타입 별칭
type TypeUser = {
name: string
age: number
isValid: boolean
} // 할당 연산자가 있다.
// 인터페이스
interface InterfaceUser {
name: string
age: number
isValid: boolean
} // 할당 연산자가 없다.
const result: InterfaceUser = {
name: 'cristiano',
age: 36,
isValid: true
}
// 위 상황에서 둘 다 적용 가능, 문법적 차이는?
// 기능적 차이가 크지 않아 취향에 맞게 사용하면 된다.
// 굳이 따지자면 인터페이스 방식을 권장한다.
// 타입 별칭은 객체데이터의 타입을 만드는 구조라기보다 다양한 타입을 지정하는 용도 => 사용 범위가 넓다.
// 인터페이스는 객체 데이터 사용을 전제하기 때문에 인터페이스가 낫다.
type alias와 interface의 차이점
- interface는 선언 병합이 가능하지만 type alias는 그렇지 않다.
- interface는 동일한 이름으로 여러 번 선언해도 컴파일 시점에 아래처럼 합칠 수 있다.
- 이런 동작을 선언 병합 (Declaration Merging)이라고 한다.
- typescript 팀은 개방-폐쇄 원칙에 따라 확장에 열려있는 javascript 객체의 동작 방식과 비슷하게 연결하도록 interface를 설계했다.
- 그래서 type alias보다는 interface를 사용하고 합타입 혹은 튜플 타입을 반드시 써야되는 상황이면 type alias를 사용하도록 권장하고 있다.
'TYPESCRIPT' 카테고리의 다른 글
[Typescript] 함수 오버로딩 (Overloading) (0) | 2023.12.12 |
---|---|
[Typescript] this의 타입 (0) | 2023.12.12 |
[Typescript] 인터페이스 (interface) (0) | 2023.12.04 |
[Typescript] 타입 가드(type guard) (0) | 2023.12.04 |
[Typescript] 타입 단언, 할당 단언 (0) | 2023.12.04 |
타입 별칭
// 타입 별칭(Alias), 별명
// type 명령어를 이용해 사용가능
type TypeA = string; // string의 별명을 만들어주는 것
type TypeB = string | number | boolean;
// 타입 별칭은 기본적으로 단일 타입보다는 유니온이나 intersection을 이용해 재사용을 하는 것에 사용
type User = {
name: string
age:number
isValid: boolean
} | [string, number, boolean] // 객체나 튜플로 지정 가능한 타입을 만들어줌
const userA: User = {
name: 'siuuu',
age:85,
isValid: false
}
const userB:User = ['ronaldo', 36, true]
function someFunc(param: TypeB): TypeA {
switch (typeof param) {
case 'string': return param.toUpperCase()
case 'number': return param.toFixed(2)
default: return 'true'
// boolean 타입 true 또는 false를 반환하면 에러 발생.
// 함수에서 typeA를 반환하겠다고 했기 때문인데, TypeA는 문자열을 의미하기 때문
}
}
타입 별칭은 type 키워드를 이용해 타입의 다른 이름을 만들어주는 기능을 한다. 단독으로 사용하기보다는 union이나 intersection을 이용해 여러 타입을 묶어 사용하는 경우가 많다.
타입 별칭 vs 인터페이스
// 타입 별칭 vs 인터페이스
// 타입 별칭
type TypeUser = {
name: string
age: number
isValid: boolean
} // 할당 연산자가 있다.
// 인터페이스
interface InterfaceUser {
name: string
age: number
isValid: boolean
} // 할당 연산자가 없다.
const result: InterfaceUser = {
name: 'cristiano',
age: 36,
isValid: true
}
// 위 상황에서 둘 다 적용 가능, 문법적 차이는?
// 기능적 차이가 크지 않아 취향에 맞게 사용하면 된다.
// 굳이 따지자면 인터페이스 방식을 권장한다.
// 타입 별칭은 객체데이터의 타입을 만드는 구조라기보다 다양한 타입을 지정하는 용도 => 사용 범위가 넓다.
// 인터페이스는 객체 데이터 사용을 전제하기 때문에 인터페이스가 낫다.
type alias와 interface의 차이점
- interface는 선언 병합이 가능하지만 type alias는 그렇지 않다.
- interface는 동일한 이름으로 여러 번 선언해도 컴파일 시점에 아래처럼 합칠 수 있다.
- 이런 동작을 선언 병합 (Declaration Merging)이라고 한다.
- typescript 팀은 개방-폐쇄 원칙에 따라 확장에 열려있는 javascript 객체의 동작 방식과 비슷하게 연결하도록 interface를 설계했다.
- 그래서 type alias보다는 interface를 사용하고 합타입 혹은 튜플 타입을 반드시 써야되는 상황이면 type alias를 사용하도록 권장하고 있다.
'TYPESCRIPT' 카테고리의 다른 글
[Typescript] 함수 오버로딩 (Overloading) (0) | 2023.12.12 |
---|---|
[Typescript] this의 타입 (0) | 2023.12.12 |
[Typescript] 인터페이스 (interface) (0) | 2023.12.04 |
[Typescript] 타입 가드(type guard) (0) | 2023.12.04 |
[Typescript] 타입 단언, 할당 단언 (0) | 2023.12.04 |