-
Unknown/Never/Void/AnyTS 2025. 12. 12. 14:31

타입스크립트 한입챌린지 7기 TS 챌린지에 참여하다
새싹에 다닐 당시 이정환님 강의를 알게되고 거금을 들여
JS + TS + Next 로드맵을 구매했었는데 그중 TS만 시작도 못한상태로 있었다.스스로 JS도 부족하다 생각이 들어 TS까진 듣는게 무리아닐까 생각이 들어서였다.
그러면서 Next는 왜 들었대,,?지금 Next 스터디도 따로 진행하고 있어서 TS가 나올때마다 조금 이해가 힘들때가 있어 어떻게 공부해볼까 고민하던 중
인프런을 뒤적거리다 마침 챌린지가 있다는것을 알게되었고,
소정의 금액이긴하지만 유료결제로 참여하는거라 완강이라도 해보고자 큰맘먹고 참여하게되었다!
여기도 매수업마다 미션이 있기때문에 강의내용은 노션에 복기하고는 있지만
가끔 블로그나 아티클을 공유를 요구할때도 있기때문에 그럴때마다 여기 티스토리를 활용하고자 한다
Day4 미션
아래 4가지 타입에 대해 자유롭게 정리해보자.
Unknownany와 비슷하게 unknown타입도 모든 값을 허용한다.
타입계층도에서 전체집합을 담당하고있다.
그러나 다른점은 다른타입에 할당하는것, 즉 다운캐스팅은 불가하다. 예외로 any타입은 할당이 가능하다.
만약 할당을 하고싶다면 예제처럼 typeof 처럼 타입정제(타입을 좁혀주는것) 한번걸러 쓰는 방법이 있다.
let unknownVar: unknown; unknownVar = 10; unknownVar = "hello"; unknownVar = {}; //unknown 타입은 any 타입과 다르게 아무런 조치없이 다른 타입에 할당 불가 num = unknownVar; //오류 unknownVar.toFixed(); //오류 if (typeof unknownVar === "number") { // 타입 정제 num = unknownVar; //ok unknownVar.toFixed(); //ok }
Never존재하지않다는 뜻으로 그 어떤것도 할당할수 없고 어떤 타입으로도 변환될수 없는 타입이다.
그래서 타입들의 집합에서 공집합을 담당하고 있다.
절대 실행 되지않는 함수나 값이 어떤것도 없다는것을 명시적으로 쓰기위해 존재한다.
function func3(): never { while (true) {} } function func4(): never { throw new Error(); } let a: never; a = 1; // 오류 a = "hello"; // 오류 a = {}; // 오류 a = undefined; // undefined도 오류 a = null; // 스트릭트모드꺼도 오류 a = anyVar; // 할당불가능하므로 오류Void
공허하다란 뜻으로 반환값이 아무것도 없음을 의미하는 타입이다.
void로 지정하면 해당 변수는 undefined이나 null 만 할당 할수있다.
function func1(): string { return "hello"; } function func2(): void { console.log("hello"); } // undefined 타입이 없는 이유는 void가 그 역할을 대신하기 때문 let a: void; a = 1; // 오류 a = "hello"; // 오류 a = {}; // 오류 a = undefined; // ok a = null; // ok (strictNullChecks 옵션 끄면)
Any모든, 누구나, 어떤 타입이든 다 허용하겠다는 의미로 특정변수의 타입을 확실히 모를때 사용한다.
타입계층도를 무시하는 치트키같은 타입이다. 다만, 예외로 never타입에게는 치트키가 통하지않는다
오류가 있는 코드도 전부 허용이 되기때문에 컴파일단계에서 잡아내지못해 사용을 지양하는것이 좋다.
let anyVar: any = 10; anyVar = "hello"; anyVar = {}; anyVar = () => {}; anyVar.toUpperCase(); //런타임에러 anyVar.toFixed(); let num: number = 10; num = anyVar;참고자료
https://xionwcfm.tistory.com/394
typescript any 와 unknown의 차이
😀 unknown은.. TypeScript 3.0 버전부터 추가된 타입입니다. unkwon은 any와 마찬가지로 모든 타입에 값이 할당될 수 있는 마치 any와 비슷하게 동작하는 타입입니다. 그렇다면 왜 unknown 타입이 필요한 걸
xionwcfm.tistory.com
[ts] void ,any, unknown, never 타입
📌 voidtype AppsettingContextType={ fontSize: FontSize; theme: Theme; setTheme:(theme:Theme) =>void; setFontSize:(fontSize:FontSize)=>void};이렇게 타입 선언에서 void 타입을 본적이 있을 것이다. void는 typescript에서 반환 타입
tofu15.tistory.com