Woowahan-TS / woowahan-ts

우아한 타입스크립트 스터디
5 stars 1 forks source link

[3장] unknown 타입과 any 타입의 공통점과 차이점에 대해 설명해주세요. #13

Closed YunjiNam closed 2 months ago

YunjiNam commented 2 months ago

📝 p.84

🧐 unknown 타입과 any 타입은 매우 유사하지만 차이점이 존재하는데요. 둘의 공통점과 차이점에 대해서 설명해주세요~!

jinsupark4255 commented 2 months ago
dlantjdgkgk commented 2 months ago

공통점: 둘 다 TypeScript에서 타입을 명시적으로 지정하지 않을 때 사용할 수 있는 타입입니다. 모든 타입의 값을 할당할 수 있습니다.

차이점: 타입 검사의 엄격성: unknown: 더 엄격한 타입 검사를 합니다. unknown 타입의 값을 사용하기 전에 타입을 좁히거나 타입 assertion을 해야 합니다. any: 타입 검사를 하지 않습니다. 어떤 연산이나 메서드 호출도 허용됩니다.

타입 안전성: unknown: 타입 안전성을 제공합니다. 잠재적인 타입 오류를 방지할 수 있습니다. any: 타입 안전성을 포기합니다. 런타임 오류의 위험이 있습니다.

사용 목적: unknown: 타입을 알 수 없는 값을 다룰 때 사용합니다. 타입 체크를 강제합니다. any: 타입 검사를 완전히 무시하고 싶을 때 사용합니다.

프로퍼티 접근 및 메서드 호출: unknown: 직접적인 프로퍼티 접근이나 메서드 호출이 불가능합니다. any: 어떤 프로퍼티 접근이나 메서드 호출도 가능합니다.

타입 추론: unknown: 다른 변수에 할당할 때 타입 추론이 되지 않습니다. any: 다른 변수에 할당할 때 해당 변수의 타입도 any가 됩니다.

일반적으로 unknown 타입을 사용하는 것이 any 타입보다 더 권장됩니다. 타입 안전성: unknown은 타입 체크를 강제하므로, 잠재적인 런타임 오류를 컴파일 타임에 잡아낼 수 있습니다.

hyejj19 commented 2 months ago

any 타입의 변수에는 어떤 타입의 값이든 할당할 수 있지만, unknown 타입의 변수에는 any 타입의 값이 아닌 다른 값의 할당을 허용하지 않습니다. 또한 any 타입과 달리 unknown 타입의 값은 해당 값의 속성값에 접근할 수 없습니다. 타입스크립트 컴파일러에서 unknown 타입으로 할당된 경우 에러를 표시하기 때문에 개발 단계에서 타입을 더 강하게 체크할 수 있습니다.