유니언 : 값에 허용된 타입을 두가지 이상 가능한 타입으로 확장시키기
내로잉 : 값에 허용된 타입이 하나 이상의 가능한 타입이 되지 않도록 좁히는 것
다른 프로그래밍 언어에서는 유니언과 내로잉 사용이 불가능하지만 타입스크립트에서는 가능하다.
여기서 mathRandom은 무슨 타입일까?
let mathRandom: string | undefined
타입으로 나온다.
something의 변수에 초기값(string)이 있더라도 이후에 타입이 변경될 수 있음을 알려주는 방법은 유니언 타입을 사용하여 string | number로 작성해준다.
유니언 타입 선언은 타입 애너테이션으로 타입을 정의하는 모든 곳에서 사용 가능하며 타입 선언 순서는 중요하지 않다.
something은 number | string 타입으로 두 개의 타입에 모두 존재하는 toString()은 사용할 수 있지만, toUpperCase()는 number 타입에 없고, toFixed()는 string 타입에 없기 때문에 something에서는 toUpperCase()와 toFixed()는 사용할 수 없다.
값 할당을 통한 내로잉
: 변수에 값을 직접 할당하여 타입을 좁혀준다.
something에 타입 지정을 string | number 주었지만 값 할당을 string 타입으로 좁혀주어 toUpperCase 사용은 가능한데 toFixed는 어렵다.
조건 검사를 통한 내로잉
: if 문을 통해서 변수의 값을 좁히는 방법이다.
typeof 검사를 통한 내로잉
: typeof 연산자를 사용하여 타입을 좁혀준다.
if문을 삼항연산자로도 변경하여 사용가능하다.
리터럴 타입은 좀 더 구체적인 버전의 원시타입니다.
name은 어떤 타입일까?
string이다. 하지만 name은 'eunbi'라는 특별한 값이다.
const로 작성한 변수는 type이 "eunbi"로 나오지만 let으로 선언하게 되면 string타입으로 나온다.
더 많은 타입 지정 방법이 많지만 오늘은 유니언, 내로잉, 리터럴 타입에 대해서만 공부해봤다.