타입스크립트를 처음 사용 했을 때는 타입을 모르는 경우 any 타입을 남발 했던 경험이 있어 경험을 바탕으로 any 타입은 되도록 사용하지 않는게 좋아 둘의 차이점을 알아보려합니다.
any와 unknown은 모두 어떤 값이든 할당할 수 있습니다 하지만 이 둘은 사용 방법과 제한 사항에서 차이가 있습니다.
any
any는 모든 타입의 값을 할당할 수 있으며, 컴파일러는 해당 값의 타입 검사를 수행하지 않습니다. 매우 유연한 타입 시스템을 제공하지만, 타입 안정성을 보장하지 않습니다. any 타입을 남발하면 코드 유지보수가 어려워지고 버그 발생 가능성이 높아집니다. 또한 개발자 친구들이 이거 애니스크립트냐고 애니비아인가라고 놀리는 경험이 있었습니다 ~ ㅎㅎ
unknown
unknown은 any와 마찬가지로 모든 타입의 값을 할당할 수 있습니다. 하지만 any와 달리, unknown은 값이 할당된 이후에도 해당 값의 타입 검사를 수행해야 합니다. unknown 타입은 타입이 현재 시점에서 알려지지 않은 경우 사용합니다. 이러한 경우 코드의 안정성을 높일 수 있습니다.
사용방법
// unknown 타입 사용 예시
function printUnknown(value: unknown) {
if (typeof value === 'string') {
console.log(value.toUpperCase());
} else {
console.log(value);
}
}
printUnknown('Hello'); // 'HELLO'
printUnknown(123); // 123
printUnknown(true); // true
// any 타입 사용 예시
function printAny(value: any) {
console.log(value.toUpperCase()); // 에러가 발생하지 않음
}
printAny('Hello'); // 'HELLO'
printAny(123); // 에러가 발생하지 않음
printAny(true); // 에러가 발생하지 않음
결론
any와 unknown은 모두 어떤 값이든 할당할 수 있으며, 유연한 타입 시스템을 제공합니다. 하지만 any는 타입 안정성을 보장하지 않기 때문에 사용을 지양해야 하며, 대신 unknown을 사용하여 타입 안정성을 보장하면서도 유연한 타입 시스템을 구현할 수 있습니다. unknown은 주로 런타임에 동적으로 타입 검사를 수행해야 하는 상황에서 사용됩니다.
'TypeScript' 카테고리의 다른 글
타입스크립트 interface vs type (0) | 2023.02.28 |
---|---|
타입스크립트를 도대체 왜 써 ? (0) | 2022.01.13 |