TypeScript

[TypeScript] Union, Any, Unknown

최성2 2022. 2. 15. 20:59

 

1. Union Type

: 하나의 변수에 여러 타입을 지정할 수 있다

 

변수명: 타입 | 타입

 

OR 연산자와 유사하다 = A 또는 B 다

let member: number | string = 123

//or

let member: (number | string) = 123

- number에는 숫자나 문자열 타입 모두 올 수 있다

- 값을 할당하는 순간 string 또는 number 중 하나로 타입이 결정된다

 

 

1-1. Array

 

괄호 필수

let member: (number | string)[]  = [1, "hi", 3]

 

괄호가 없으면,

let member: number | string[]  = [1, "hi", 3]

number 또는 [string array] 라는 뜻이 된다

 

 

1-2. Object

let member: { a: string | number }  = { a: 123 }

 

 

✅ 유니온 타입은 새로운 타입을 만드는 것이다

let age: string | number

age + 1
//에러 발생

 

string + 1(가능)

number + 1(가능)

string | number + 1(불가능)

 

새로운 타입이기 때문에 수학 연산이 불가능하다

 

 

2. Any Type

: 모든 타입을 허용한다

 

변수명: any

let member: any
member = 1
member = "hi"
member = {}

 

✅ any를 사용하면 타입스크립트 쓸 이유가 없다. 비상시를 제외하고는 사용하지 말자

 

 

3. Unknown Type

: (최신 버전) 모든 타입을 허용한다. 유사 any지만, 조금 더 안전하다

 

변수명: unknown

let member: unknown
member = 1
member = "hi"
member = {}

 

 

✅ unknown 이 any 보다 안전한 이유

 

any 일 때는 에러가 나지 않는데,

let member: any
member = 1
member = "hi"
member = {}

let a :string = member

 

unknown 일 때는 에러가 난다

let member: unknown
member = 1
member = "hi"
member = {}

let a :string = member

 

+ 간단한 수학 연산에도 차이가 있다

let member: any

member - 1
//에러 없음
let member: unknown

member - 1
//에러 발생

 

 

Ref

https://codingapple.com/course/typescript-crash-course/

 

빠르게 마스터하는 타입스크립트 - 코딩애플 온라인 강좌

  누구나 마음 한켠엔 나만의 웹서비스를 만들고 싶어합니다. 프론트엔드는 어찌저찌 하겠는데 서버 만드는게 어렵고 귀찮다고요? 그렇다면 Firebase를 쓰십시오.   구글이 웹서버를 대신 만들어

codingapple.com

 

'TypeScript' 카테고리의 다른 글

[TypeScript] Type Alias, readonly, extend  (0) 2022.02.16
[TypeScript] Narrowing, Assertion  (1) 2022.02.16
[TypeScript] 함수 타입 지정 + void  (0) 2022.02.15
[TypeScript] Primitive Types  (0) 2022.02.14
TypeScript란?  (2) 2022.02.14