typescript에서 any대신 never과 unknown을 써야하는 이유와 사용 예시
TypeScript에서 any 대신 never와 unknown을 사용하는 이유는 코드의 안전성과 명확성을 높이기 위해서입니다.
any는 타입 검사를 우회하여 모든 타입을 허용하기 때문에, 타입 안전성을 잃게 됩니다
반면, never와 unknown은 더 명확한 타입 제어를 제공합니다.
unknown은 모든 타입을 할당할 수 있지만, unknown 타입의 값을 사용할 때는 타입 검사를 통해 안전성을 보장해야 합니다.
function processValue(value: unknown) {
if (typeof value === 'string') {
console.log('String value:', value.toUpperCase());
} else if (typeof value === 'number') {
console.log('Number value:', value.toFixed(2));
} else {
console.log('Unknown type');
}
}
processValue('Hello');
processValue(42);
never는 절대 발생하지 않는 값의 타입
function throwError(message: string): never {
throw new Error(message);
}
function exhaustiveCheck(value: never): never {
throw new Error(`Unhandled case: ${value}`);
}
type Shape = 'circle' | 'square';
function getArea(shape: Shape) {
switch (shape) {
case 'circle':
return Math.PI * 1 * 1; // Example for circle
case 'square':
return 1 * 1; // Example for square
default:
exhaustiveCheck(shape); // Ensures all cases are handled
}
}