반응형
void
void 타입은 아무런 값도 없음을 의미하는 타입
- 보통은 다음과 같이 아무런 값도 반환하지 않는 함수의 반환값 타입을 정의할 때 사용
function func2(): void {
console.log("hello");
}
- 변수의 타입으로도 void의 타입을 지정할 수 있다.
- 그러나 void 타입의 변수에는 undefined 외의 다른 값은 담을 수 없다.
- 이유는 void 타입이 undefined 타입을 포함하는 타입이기 때문
let a: void;
a = undefined;
- 만약 이때 tsconfig.json에 엄격한 null 검사(strictNullChecks) 옵션을 해제(False)로 설정하면 특별히
이때에는 void 타입의 변수에 null 값도 담을 수 있게 된다.
// "strictNullChecks: false" 일 경우
let a: void;
a = undefined;
a = null;
never
never 타입은 불가능을 의미하는 타입
- 보통 다음과 같이 함수가 어떠한 값도 반환할 수 없는 상황일 때 해당 함수의 반환값 타입을 정의할 때 사용됨.
function func3(): never {
while (true) {}
}
- 함수 func3는 무한 루프를 돌기 때문에 아무런 값도 반환할 수 없다.
- 엄밀히 말하면 이 함수는 영원히 종료될 수 없기 때문에 뭔가를 반환한다는 것 자체가 '불가능' 하다.
- 이렇게 불가능 한 값의 타입을 정의할 때 never 타입을 사용한다.
무한 루프 외에도 다음과 같이 의도적으로 오류를 발생시키는 함수도 never 타입으로 반환값 타입을 정의가 가능하다
function func4(): never {
throw new Error();
}
- 변수의 타입을 never로 정의하면 any를 포함해 그 어떠한 타입의 값도 이 변수에 담을 수 없게 된다.
let anyVar: any;
(...)
let a: never;
a = 1;
a = null;
a = undefined;
a = anyVar;
반응형
'Typescript' 카테고리의 다른 글
Typescript | 타입 추론, 타입 단언, 타입 좁히기, 서로소 유니온 타입 (0) | 2024.10.29 |
---|---|
Typescript | 타입 호환성, 대수타입 (2) | 2024.10.29 |
Typescript | Enum, any, unknown (0) | 2024.10.25 |
Typescript | 객체, 타입 별칭, 인덱스 시그니쳐 (0) | 2024.10.24 |
Typescript | 배열과 튜플 (1) | 2024.10.24 |