[TS] type 엄격성 (any , union , unknown 특이점 살펴보기)

2021. 12. 23. 15:51개발

자유도가 높다 = 에러메세지 안남 = 문제생겨도 어디서 생긴지 모름 

 

자유도가 낮다 = 정해진 형식을 사용한다. = 형식에서 벗어나면 에러가난다.= 에러메세지가 나올때 더 정확하게 지적해준다.

 

타입스크립트 = 타입의 엄격성을 높힌 자바스크립트 

 

여기서 타입이란

문자열,숫자,object,class,function,등등

 

언어라고생각 하기 보단. 일종의 툴이라고 생각하는게 맞다. 

 

 

 

any 타입과 unknown 타입의 차이점 

any 는 자바스크립트를 안쓰는 거랑 똑같음 타입제한의 해제 를 뜻함

unknown은 타입제한의해제는 아님 unknown이라는 타입을 사용하는것

 

타입스크립트는 변수의 선언 부분에서 타입을 지정하여서 타입을 지정한다.

(대부분은 할당 과정에서 자동으로 지정됨)

 

이렇게 지정된 타입은

let 변수A :string = '타입지정'

변수A = 123

 

다른 타입의 할당을 막아준다.

 

let 침입자 :any = 123 이라면

변수A = 침입자

 

가능해진다.

 

즉 any 는 다른 변수의 타입쉴드를 깨는 강력한 침입자가 될수있다. 심지어 에러도 안난다 !! 

TS 에서는 any 보다 unknown을 쓰도록하자

unknown 은 다른 변수의 타입 쉴드를 깰수 없다. 왜냐하면 unknow이라는 타입이 지정되어있기 때문이다.

 

 

 

union의 특이성 

유니온은 다수의 타입이 합쳐진 하나의 타입이다.

number | string 을 가지는 유니온 타입 A  = 123 이라고 하자 

let A :number | string = 123;

let B : number ;

 

숫자 타입이 들어가는 자리에 유니온 타입은 들어갈수 없다.

 

라고 하는데 왜 내 실행환경에서는 되는거야 ... ?

(단 유니온 타입에 숫자가 할당되면 가능하다)

 

 

undefined + 1 = NaN

선언만 해놓고 할당 안하면 = undefined

 

 

 

'개발' 카테고리의 다른 글

TDI : 웹 통신  (0) 2022.03.10
프로젝트 빌드 TypeScript by npm  (0) 2021.12.31
[JS] key event 정리  (0) 2021.12.22
호이스팅 , 실행 컨텍스트  (0) 2021.12.22
var vs let vs const  (0) 2021.12.08