-
타입 별칭(Type Alias)Programming/JavaScript & TypeScript 2022. 2. 16. 16:53728x90
타입에 다른 이름을 붙여주는것
Interface랑 비슷해 보인다
Primitive, Union Type, Tuple, Function, 기타 직접 작성해야하는 타입을 다른 이름으로 지정할 수 있다.
별명 개념으로 보면 된다.
https://www.digitalocean.com/community/tutorials/typescript-type-alias
How To Use Type Aliases in TypeScript | DigitalOcean
www.digitalocean.com
https://laikhan-workshop.tistory.com/45
[Typescript] Type assertion, Type alias
Type assertion 형변환과는 다르다. '타입이 이것이다' 라고 컴파일러에게 알려주는 것을 의미한다. 문법적으로 두가지 방법이 있다. 변수 as 강제할 타입 (권장) <강제할 타입> 변수 let value: any = "this
laikhan-workshop.tistory.com
// Aliasing Primitive type MyStringType = string; const str = "world"; let myStr:MyStringType = "hello" myStr = str // MyStringType과 string은 같은 타입이기때문에 대입 가능 // Aliasing union let person:string|number = 0; person = 'Mark'; type stringOrNumber = string|number; let another:stringOrNumber = 1 another = 'hong' // Aliasing Tuple let personInfo:[string, number] = ['Hong', 33]; type PersonType = [string, number]; let anotherPersonInfo:PersonType = ['Annn', 24] // Aliasing Function type EatType = (food:string) => void;
TypeAlias와 interface를 사용하는 기준
타입이 목적, 존재 가치가 명확하면 interface,
대상을 가리키면 typealias 사용
결국 여러 타입을 하나의 타입으로 만들고, 그 안에서 고르면 되는게 타입인것 같다...
유니온을 이용해서...
type UserState = 'PENDING' | 'APPROVED' | 'REJECTED'; function checkUser(user: User2) : UserState { //유저 상태중에 하나를 리턴하게 만듬 if(user.login()){ return 'APPROVED' }else{ return 'REJECTED' } }
type도 상속이나 구현이 가능하지만, union으로 만들어진 타입에서는 불가능하다.
잘 사용하진 않는다. 그럴바에는 interface를 사용하자
type TypeA = { str: string; }; // union type으로 정의된 경우 extends 나 implements 와 사용할 수 없다. type TypeB = TypeA | { num: number; }; class Person implements TypeA { str: string; constructor(name:string) { this.str = name } } interface Person extends TypeB {} /* 오류 */ // An interface can only extend an object type or intersection of object types with statically known members.
'Programming > JavaScript & TypeScript' 카테고리의 다른 글
typescript Interface (0) 2022.02.18 TypeScript Compiler(타입스크립트 컴파일러) (0) 2022.02.16 타입 호환성(type Compatibility) (0) 2022.02.16 TypeSystem (0) 2022.02.16 사용자의 관점으로 코드 바라보기 (0) 2022.02.16