updated_at: 2025-04-02 04:34

타입변환 및 타입단언

typescript를 사용하다보면 가장 빈번하게 만나는 에러 중에 하나가 다음과 같을 것입니다.
이것은 argument 의 타입(입력)과 assign(수신)되어야할 parameter의 타입이 맞지 않아서 발생합니다.

Argument of type 'number | { x: number; y: number; z: number; }' is not assignable to parameter of type 'Float32Array<ArrayBufferLike>'.
Type 'number' is not assignable to type 'Float32Array<ArrayBufferLike>'

각각의 예제를 보면서 타입변환 및 타입단언에 대해서 설명드리겠습니다.

타입변환

example 1

export interface Message {
  type: number;
  message: string;
}

let message:Message = {} // error
let message:Message = <Message>{} // OK (앞에 <> 을 이용하여 타입선언, <Float32Array<ArrayBufferLike>>)

example 2

let user: object = {idx: number, gender: 'm', name: 'pondol'}
user.name; // error
(<{name: string}>user).name; // OK

타입단언

example 1

let idx: any = 123;
let uid = idx as number; // any type을 as 를 이용하여 number 타입으로 변경

example 2

interface IText {
  idx: number
}

let user: object = {idx: 1};
(user as IText).idx;
(<IText>user).idex;

기타 다양한 에러 처리

const colliderDesc: RAPIER.ColliderDesc = createColliderFromOptions(...)
// Type 'ColliderDesc | null' is not assignable to type 'ColliderDesc'.
//  Type 'null' is not assignable to type 'ColliderDesc'.ts(2322)
const colliderDesc: RAPIER.ColliderDesc = <RAPIER.ColliderDesc>createColliderFromOptions(...)
평점을 남겨주세요
평점 : 2.5
총 투표수 : 1

질문 및 답글