-
[TypeScript] 타입스크립트 - Type assertions, Type aliasFrontend 2020. 3. 2. 22:24
각잡고 글 쓰려고 마음 먹으니 너무 부담스럽고 잘 안하게 되어서
아주 가볍게 요약 정리하는 느낌으로 타입스크립트 기초 내용들을 하나씩 정리해보려고 한다.
Type assertions
실제 데이터 구조를 바꿔주는 형 변환이 아니고 단지 ‘타입이 이것이다’라는 것을 typescript 컴파일러에게 알려주는 것을 의미
(즉, 개발자가 확실히 이 타입이라고 확신하는 경우에만 사용한다.)
- 변수 as 강제할 타입
- <강제할타입>변수
let someValue: any = 'this is a string'; let strLength: number = (<string>someValue).length; let strLength2: number = (someValue as string).length; // jsx에서는 as를 많이 사용한다. (<> 사용 시 헷갈릴 수 있기 때문)
Type alias
인터페이스와 비슷해 보인다. (대체할 수 있는 부분이 꽤 있음)
- Primitive, Union Type, Tuple에 사용 가능
- 반복적으로 같은 타입을 계속 사용하기 귀찮을때 Type alias 선언한 후 재사용하기 위해 사용
- 만들어진 타입의 refer로 사용하는 것이지 타입을 만드는 것이 아님
Aliasing Union Type
let foo: string | number = 0; foo = 'hello';
⬇️
type StringOrNumber = string | number; let bar: StringOrNumber = 0; bar = 'world';
Aliasing Tuple
let person: [string, number] = ['Jane', 10];
⬇️
type PersonTuple = [string, number]; let another: PersonTuple = ['Tom', 21];
Interface와 차이점
-
Alias 사용 시 지정한 이름으로 타입을 생성하는 것이 아니고 reference로만 사용
- Type alias는 새로운 이름을 생성하지 않는다. object literal type으로만 인지
- Interface 정의 시 어디에서나 사용 가능한 새로운 이름을 생성한다
-
Type alias는 interface와 달리 상속이 불가능 (extends, implements가 안됨)
- 이 부분은 2.7 버전부터 변경되어 type alias도 다른 타입으로부터 상속이 가능해짐
- 그러나 되도록이면 상속이 필요한 경우 Interface 사용을 권장
Type alias와 Generic
generic은 다음 포스팅에서 정리할 예정이긴한데, 어쨌든 type alias도 generic과 함께 사용 가능.
type Container<T> = { value: T }; let container: Container<number> = { value: 123 };
반응형'Frontend' 카테고리의 다른 글
[JS/CustomEvent] 자바스크립트, 커스텀 이벤트 생성하기 (252) 2020.03.07 [TypeScript] 타입스크립트 - Generic (252) 2020.03.03 [TypeScript/3.8] 타입스크립트 3.8에서 바뀐 것들에 대하여 (252) 2020.03.01 [React] Typescript와 Redux hooks를 이용하여 간단한 TODO LIST 만들기 (253) 2020.02.23 [React] Context Api에 대해서 (252) 2020.02.09 COMMENT