타입스크립트 에러 사전'up'을 넣었는데 string이라 안 받아줘요“리터럴 타입 안 맞음”
메뉴판 › 타입스크립트 에러 사전 › 좁히기·유니온 › 유니온 타입에서 메서드를 못 써요
error TS2339: Property 'toUpperCase' does not exist on type 'string | number'.
전
function f(x: string | number) {
return x.toUpperCase();
}후
function f(x: string | number) {
return typeof x === "string" ? x.toUpperCase() : String(x);
}왜 이렇게 되나
- 유니온(A | B)에서는 양쪽 공통 멤버만 쓸 수 있어, 한쪽 전용 메서드가 막힌다
됐는지 보는 법
각 타입별로 분기돼 있고 빨간 줄이 없으면 성공.
같은 묶음 · 좁히기·유니온
타입스크립트 에러 사전 · 좁히기·유니온