TS에서 강제 형변환

조민호·2023년 3월 3일
0

TS에서 하나의 변수를 하나의 타입으로 끝까지 일관성 있게 사용하는 것이 좋겠지만 , 가끔 타입을 변경해야 할 때 강제 형변환을 사용하며 방법으로는 Type Assertion인 as키워드를 사용합니다



타입끼리 서로 관계가 있는 , 부모-자식의 관계인 경우

HTMLElement와 HTMLDivElement는 서로 부모-자식 관계이기 때문에 unknown을 생략할 수 있습니다

const div: HTMLDivElement = document.createElement('div');

(div as HTMLElement).textContent;
(div as unknown as HTMLElement).textContent;
💡 document.createElement()은 생성을 하는 것이므로 getElement() 처럼 Non-null assertion을 사용할 필요가 없습니다



타입끼리 아무런 관계가 없는 경우

이럴때는 as를 사용하는 것은 맞지만 **unknown으로 먼저 캐스팅을 진행해줘야 합니다**

number 와 string은 관계가 없는 명확히 다른 타입입니다

const num: number = 0;

(num as unknown as string).substr(0, 5); 


+괄호가 붙고 안 붙고의 경우도 구별해야 합니다

  1. 변환된 타입을 새 변수에 할당 할 때는 괄호를 안 붙입니다

    const num: number = 10;
    
    // newStr 는 string타입
    const newStr = num as unknown as string;
  2. 변환된 타입으로 사용만 할 경우 괄호를 붙입니다

    const hello: boolean = false;
    
    // 기존의 hello변수를 string타입으로 사
    (hello as unknown as string).substring(0);

출처 :

타입스크립트 형변환

TypeScript: 타입 형변환 (type assertions)

profile
웰시코기발바닥

0개의 댓글