관리 메뉴

Jerry

[TIL] [타임어택9기][리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편 - (4) : never 타입과 느낌표(non-null assertion) 본문

Front/Typescript

[TIL] [타임어택9기][리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편 - (4) : never 타입과 느낌표(non-null assertion)

juicyjerry 2024. 2. 25. 23:53
반응형
섹션 1 기본 문법 배우기

 

 

 

 

<never 타입과 느낌표(non-null assertion)>

 

never 타입 : 배열에 일반적인 타입이 올 수 없다

const array = [];
array.push('hello');

 

 

아래 경고 메시지처럼, never 타입에의 파라미터에 string 타입을 추가할 수 없다고 한다.

 

 

 

 

 

Element + F12

Element에 커서를 두고 F12를 눌렀을 경우, 해당 Element에 대해 추가 정보를 얻을 수 있음

 

 

 

느낌표는 null이나 undefined가 아님을 보증하는 방식

- 내가 책임 질게!! but, 퇴사하면 책임질 사람이 사라짐

 

const head = document.querySelector('#head');
if (head) {
    // head.innerTML = 'hello world'; // 오타났을 경우 알려주는 기능 제공
    console.log(head);
}

const head1:Element = document.querySelector('#head')!;


=> 타입스크립트를 사용하면 오타, 혹여나 모를 불안정한 상황을 잡아줄 수 있다

 

 

 

 

 

다시 간단히 정리하면, (정리는 TOAST UI REFERENCE 참고)

 

never 타입이란

값의 공집합이자 empty 타입과 같아 어떠한 값도 없기에 any 뿐만 아니라 어떤 값도 가질 수 없다.

= 점유할 수 없는 타입(uninhabited type) 

= 바닥 타입(buttom type)

 

 

필요성

문자 체계에도 불가능을 나타내는 타입이 필요하기 때문이다. (숫자는 0)

타입스크립트에서는 아래와 같은 방법으로 나타내고 있다.

1. 값을 포함할 수 없는 빈 타입
- 제네릭과 함수에서 허용되지 않는 매개변수
- 호환되지 않는 타입들의 교차 타입
- 빈 합집합(무의 합집합)

2. 실행이 끝날 때 호출자에게 제어를 반환하지 않는 함수의 반환 타입
- 예) Node의 process.exit
- void는 호출자에게 함수가 유용한 것을 반환하지 않는다는 것이므로 혼동하지 않도록 한다.

3. 절대로 도달할수 없을 esle 분기의 조건 타입

4. 거부된 프로미스에서 처리된 값의 타입

 

 

 

사용

function fn(input: never) {}

declare let myNever: never
fn(myNever) // Okay

fn() // Not Okay
fn(1) // Not Okay
fn('foo') // Not Okay

declare let myAny: any
fn(myAny) // Not Okay

 

 

 

https://ui.toast.com/posts/ko_20220323

 

타입스크립트의 Never 타입 완벽 가이드

타입스크립트의 never 타입은 다른 타입만큼 흔하게 사용되거나 피할 수 없는 것이 아니기 때문에 충분히 논의되고 있지 않다. 타입스크립트 초보자는 조건부 타입 같은 고급 타입을 처리하거나

ui.toast.com

 

 

반응형