[TypeScript] 타입 단언(Type Assertion)

Dodam·2024년 1월 17일
0

[TypeScript]

목록 보기
11/11
post-thumbnail

Type Assertion

타입 단언이라 불리는 Type Assertion은 타입을 강제적으로 지정해 주는 것을 말한다.
여기서 타입 캐스팅과 다르다는 점을 인식하고 있어야 한다.
타입 단언은 as 키워드를 이용해서 정의할 수 있다.

// name이라는 변수의 타입은 string이라고 정의
const name: string = 'Capt';

// 위 코드에 Type assertion을 적용
const name = 'Capt' as string;

언제 사용하는가?

타입 단언은 타입스크립트 컴파일러보다 개발자가 해당 타입을 더 잘 알고 있을 때 사용한다.
또는, 자바스크립트 기반 코드에 점진적으로 타입스크립트를 적용할 때도 자주 사용된다.

// 타입 정의
interface Hero {
	name: string;
	age: number;
}

// app.js
cons capt = {};
capt.name = '캡틴';
capt.age = 100;

const capt: Hero = {}; // 오류 발생

// as 키워드로 해결!
const capt = {} as Hero; // 오류가 발생하지 않음
capt.name = '캡틴';
capt.age = 100;

타입 단언을 사용할 때, 주의할 점

let x = "1";

// error: 'string' 형식을 'number' 형식으로 변환한 작업은 실수일 수 있다.
// (두 형식이 서로 충분히 겹치지 않기 때문)
// 의도적으로 변환한 경우에는 먼저 'unknown'으로 식을 변환한다.
let y: number = x as number;  // Error

let z: number (<any>x) as number;  // any 또는 unknown으로 변환 후, 다시 한 번 타입을 변환한다.

위 예제를 보면 y 변수에서 에러가 발생하는데,
Type Assertion의 규칙‘보다 구체적인 또는 덜 구체적인’ 버전의 타입으로 변환하는 행위만 허용된다.

즉, y 변수를 해결하려면 anyunknown으로 먼저 변환한 다음
z 처럼 다시 한 번 변환을 시켜줘야 한다.

profile
⏰ Good things take time

0개의 댓글