Typescript 의 any , unknown , never
any는 타입스크립트의 고유효과 타입체크를 '비활성화' 시킨다.
배열과 불리언 타입인 a + b 가 정상 작동하는 이유는 any 속성을 사용했기 때문이다.
<script>
// any는 타입스크립트를 비활성화 시킨다.
const a : any[] = [1, 2, 3, 4]
const b : any = true
// any를 사용했기 때문에 정상 작동
a + b
</script>
unknown은 변수의 타입을 미리 알지 못 할 때 사용한다.
<script>
// 변수의 타입을 미리 알지 못 할 때 사용
let a:unknown;
// if문을 사용해서 typeof로 a가 number일 때 연산 하면 에러가 발생하지 않는다.
if(typeof a === 'number') {
let b = a + 1
}
</script>
절대 실행되지 않는 값
never은 일반적으로 함수가 어떠한 값도 반환하지 않을 때 사용한다.
일부 함수는 값을 반환하지 않는다.
이는 함수가 예외를 throw하거나 프로그램 실행을 종료함을 의미한다.
<script>
function fail(msg: string): never {
throw new Error(msg);
}
</script>
타입이 두 가지일 때
<script>
function hello(name:string|number) {
if (name === "string"){
name // string
} else if (name === "number") {
name // number
} else {
name // never 절대 실행되지 않는다.
}
}
</script>