✨유니언 타입
값에 허용된 타입을 두 개 이상의 가능한 타입으로 확장하는 것을 유니언이라 한다.
let mathmaticion = Math.random() > 0.5 ? undefined : "Mark Goldberg";
// mathmetician은 undefined와 string 타입을 가진다. 즉 유니언 타입을 가진다.
유니언 타입 선언
애너테이션으로 유니언 타입을 정의할 수 있다.
let thinker : string | null = null;
if(Math.random() > 0.5){
thinker = "Susanne Langer";
}
유니언 속성
유니언 타입으로 설정한다면, 해당 모든 타입에 존재하는 속성만 사용할 수 있다.
let mathmaticion = Math.random() > 0.5 ? undefined : "Mark Goldberg";
mathmaticion.toString(); // OK
mathmaticion.toUpperCase(); // ERROR
mathmaticion.toFixed(); // ERROR
✨내로잉
값에 허용된 타입을 두 개 이상 가지지 못하게 하는 것, 구체적인 타입임을 코드에서 유추하는 것을 내로잉이라 한다.
타입을 좁히는 데 사용할 수 있는 논리적 검사를 타입 가드라고 한다.
타입 가드에는 다음과 같은 방법이 있다.
값 할당을 통한 내로잉
let admiral : number | string;
admiral = "Grace Hopper";
admiral.toUpperCase(); // OK
admiral.toFixed(); // ERROR
// 문자열 할당으로 string 타입으로 내로잉 되었다.
조건 검사를 통한 내로잉
let hello = Math.random() > 0.5 ? "STRING" : 51
if(typeof hello === "string"){
hello // string
}else {
hello // number;
}
let hello = Math.random() > 0.5 && "STRING"
if(typeof hello === "string"){
hello // string
}else {
hello // false;
}
참 검사를 통한 내로잉
let hello = Math.random() > 0.5 ? "STRING" : 51
if(hello === "STRING"){
hello // string
}else {
hello // string | number;
}
let hello = Math.random() > 0.5 && "STRING"
if(hello){
hello // string
}else {
hello // string | false;
}
논리 연산자 &&와 ?는 참 여부를 검사할 수 있지만, false일 경우 빈 문자열인지 undefined인지는 알 수 없습니다.
✨리터럴 타입
리터럴 타입은 구체적인 버전의 원시 타입을 의미한다.
const philosopher = "Hypatia"
philosopher // const philosopher: "Hypatia"
// Hypatia 라는 구체적인 리터럴 타입이 설정되었다.
✨엄격한 null 검사
‘십억 달러의 실수(The Billion-Dollar Mistake)’는 다른 타입이 필요한 위치에서 null 값을 허용하는 많은 타입 시스템을 가리키는 용어. 엄격한 null 검사가 없는 언어는 다음이 허용된다
const firstName: string = null;
strictNullChecks를 활성화 하여 모든 타입에 null과 undefined값으로 인한 안전 여부를 확인할 수 있다.
초기값이 없는 변수
let hello: string;
hello.length(); //ERROR Variable 'hello' is used before being assigned
값이 할당되기 전 해당 변수를 사용하려고 시도하면 위와 같은 오류가 나타난다.
✨타입 별칭
type RawData = boolean | number | null | string | undefined;
let rawDataFirst = RawData;
type을 이용하여 타입 별칭을 만들 수 있다.
타입 별칭 결합
타입 별칭을 다른 타입 별칭을 참조하여 만들 수 있다. 즉 유니언 타입인 타입 별칭 내 또 다른 유니언 타입인 타입 별칭을 사용할 수 있다.
type Id = number | string;
type IdMaybe = Id | undefined | null;
'기술 서적 > 하루 30분 러닝 타입스크립트' 카테고리의 다른 글
[하루 30분 러닝 타입스크립트] 인터페이스 (0) | 2024.01.04 |
---|---|
[하루 30분 러닝 타입스크립트] 배열 (0) | 2023.12.27 |
[하루 30분 러닝 타입스크립트] 함수 (0) | 2023.12.23 |
[하루 30분 러닝 타입스크립트] 객체 (0) | 2023.12.22 |
[하루 30분 러닝 타입스크립트] 타입 시스템 (0) | 2023.11.30 |