typescript 4.9버전부터 사용 가능한 satisfies
는 기존에 사용하던 as처럼 사용하여 upcast를 가능하게 하지만, 조금 더 엄격하게 type을 확인하고, 컴파일타임에서 에러를 확인하는 것이 가능합니다.
as:
// 편리하지만 안전하지 않음 (as)
const object = {
a: 10,
b: { a: 10, b: 20 } as { a: number } // no error
b: {} as { a: number } // no error (!!!)
}
satisfies:
// 편리하고 안전함
const object = {
a: 10,
b: { a: 10, b: 20 } satisfies { a: number } // no error
// b: {} satisfies { a: number } // error
}