일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리덕스
- js
- 코어 자바스크립트
- 타입스크립트 올인원
- 토익
- 알고리즘
- 타임어택
- SQL 고득점 Kit
- Async
- 4주 프로젝트
- 회고
- 제로초
- 2주 프로젝트
- 렛츠기릿 자바스크립트
- 파이썬
- LeetCode
- codestates
- python
- programmers
- 정재남
- til
- 타입스크립트
- 리트코드
- 코드스테이츠
- 백준
- 리액트
- 자바스크립트
- javascript
- 프로그래머스
- 손에 익히며 배우는 네트워크 첫걸음
Archives
- Today
- Total
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
반응형