런타임에 사용하는 연산자인 typeof, instanceof, in, literal type, custom type guard 을 이용하면, 컴파일 타임에 인식을 합니다.

Type Guard 를 사용하면 조건문 블록 스코프 내에서 타입을 좁힐 수 있습니다. ⇒ 아주 굿

typeof type guards

typeof

typeof 연산자(JavaScript)

결과는 문자열로 다음의 값을 가질 수 있다.

(typeof null 은 'object')

TypeScript는 JavaScript 인스턴스 및 운영자 유형을 알고 있습니다. 이러한 변수를 조건 블록에서 사용하는 경우 TypeScript는 해당 조건 블록 내에서 서로 다른 변수의 유형을 이해합니다. 다음은 TypeScript에서 특정 기능이 문자열에 존재하지 않음을 깨닫고 사용자 오타가 될 수 있는 항목을 보여 주는 간단한 예입니다.

function getNumber(value: number | string): number {
  value;
	if (typeof value === 'number') {
    value;
		return value;
	}
  value;
	return -1;
}

instanceof type guards

instanceof

instanceof 연산자(JavaScript)