[TypeScript] TypeScript as 다운 캐스팅

고병표·2022년 2월 10일
1

TypeScript

목록 보기
2/5
post-thumbnail

as 다운 캐스팅

TypeScript 문법으로 as를 사용하여 다운캐스팅를 할 수 있습니다.

다운 캐스팅는 안전한 방법은 아니지만 가끔 TypeScript로 작성하다보면 필요한 경우도 있습니다.

다운 캐스팅는 파생된 타입의 값을 부분 타입 형태로 사용하는 방법입니다.

const value = rand();

const str = value as number;
console.log(str * 10);

function rand(): string | number {
	if (Math.random() < 0.5) {
		return 'hello';
	} else {
		return 123;
	}
}

예제에서는 변수 value는 string | number 의 union 타입으로 값을 설정하고 있습니다.

변수 value는 다운 캐스팅value as number 을 사용하여 number 타입으로 사용하고 변수 str에 number 타입으로 대입하도록 하고 있습니다.

이러한 방법은 안전한 방법이라고 할 수 없습니다.

이유는 변수 value는 string 타입일 경우도 있기 때문입니다.

변수 str에 문자열을 대이해야할 가능성도 있습니다.

그리고 as를 다운 캐스팅를 할 경우 전혀 관계 없는 값을 변환시키는 것은 불가능 합니다.

const value = 'foo';
// 에러: Type 'string' cannot be converted to type 'number'.
const str = value as number;

하지만 TypeScript는 any 타입을 사용하여 변환 시킬수 있습니다.

위험성은 있지만요.

const value = 'foo';
const str = value as any as number;

as를 사용하여 형변환을 할수는 있지만 as 조금 위험부담이 있기 때문에 정말 부득이하게 사용해야할 경우가 아니라면 다른 방법을 사용하는 것이 좋습니다.

0개의 댓글