[Typescript] 타입 단언, 할당 단언

2023. 12. 4. 15:48· TYPESCRIPT

타입 단언

// 단언 키워드 - as
//  Non-null 단언 연산자 = !
// 잘못 사용하면 any처럼 typescript 사용 이유가 없어질 수도 있다.

// 1

const el = document.querySelector('body') as HTMLBodyElement // null이 아니고 HTMLBodyElement일 것임을 단언해줌
el.textContent = 'Hello World!'

const el2 = document.querySelector('body') 
el2!.textContent = 'Hello World!' // 또는 non-null 연산자를 이용할 수 있다.

const el3 = document.querySelector('.title');
if (el3) {
  el3.textContent = 'Hello World!'
} // type guard

// 2
function getNumber(x: number|null|undefined) {
  if (x) {
    return Number(x.toFixed(2))
  }
  // return Number((x as number).toFixed(2)) 
  // return Number(x!.toFixed(2)) non-null 연산자 사용
  // x는 null일 수도 있고 undefined일 수도 있어서 에러발생. 타입 단언을 어떻게 해줄것인가?
  // null이 들어오면 어떻게 될까
  // 단언이 잘못되었을 때, 코드상에서 에러가 발생하지는 않는다. 동작시킬 때까지는 알 수 없다
}

function getValue(x:string | number, isNumber:boolean) {
  if (isNumber) {
    return Number((x as number).toFixed(2)); // toFixed는 문자열을 반환한다.
  }
  return (x as string).toUpperCase();
}

getValue('hello world', false) // 'HELLO WORLD'
getValue(3.1415926535, true) // 3.14

 

할당 단언

let num2!:number // ! - 할당단언, 값을 할당하지 않았지만 값이 있다고 알려주는 연산자
// non-null과는 다르게 사용됨. 콜론 기호 앞에 사용
console.log(num2) // 할당하기 전에 사용해서 에러가 남

'TYPESCRIPT' 카테고리의 다른 글

[Typescript] 인터페이스 (interface)  (0) 2023.12.04
[Typescript] 타입 가드(type guard)  (0) 2023.12.04
[Typescript] 타입 추론 (type inference)  (1) 2023.12.04
[Typescript] 타입 종류  (0) 2023.12.04
[TypeScript] 타입스크립트  (0) 2023.04.28
'TYPESCRIPT' 카테고리의 다른 글
  • [Typescript] 인터페이스 (interface)
  • [Typescript] 타입 가드(type guard)
  • [Typescript] 타입 추론 (type inference)
  • [Typescript] 타입 종류
Melon Man
Melon Man
Hello World
Melon Man
제발 CPU는 집에서 만들어 씁시다
Melon Man
전체
오늘
어제
  • 분류 전체보기 (644)
    • 직접 만들어 보기 (2)
    • 가내공업 (2)
    • HTML (0)
    • CSS (4)
    • JAVASCRIPT (51)
    • TYPESCRIPT (14)
    • NODE.JS (19)
    • REACT (7)
    • NEXT.JS (1)
    • REACT NATIVE (5)
    • REDUX (2)
    • PYTHON (17)
    • 자료구조 및 알고리즘 (35)
    • 컴퓨터 구조 (9)
    • 운영체제 (7)
    • NETWORK (3)
    • CodeUp 기본 100제 - Python (98)
    • 잡지식 (1)
    • 백준 (347)
    • SWEA (0)
    • GIT (4)
    • C (2)
    • C++ (11)
    • JAVA (2)
    • 객체지향프로그래밍 (0)
    • 정보처리기사 (1)
    • 프로그래머스_SQL (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • mdn
  • 입출력
  • CodeUp
  • 유니온 파인드
  • React
  • 입문
  • Node
  • 기초
  • 위상정렬
  • node.js
  • 다익스트라 알고리즘
  • 백준
  • 정렬
  • 초보
  • input
  • C++
  • TypeScript
  • 운영체제
  • 함수
  • event
  • 알고리즘
  • 자바스크립트
  • 파이썬
  • 코드업
  • 자료구조
  • python
  • BFS
  • javascript
  • standard built-in object
  • 표준내장객체

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
Melon Man
[Typescript] 타입 단언, 할당 단언
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.