any
any타입에는 모든 종류의 값을 다 저장할 수 있다.
let anyType: any;
anyType = 1;
anyType = true;
anyType = ["sports",1];
근데 아래처럼 하게되면 오류가 난다
ley anyArray: any[];
anyArray = 1;
// 배열이니까
단점이 너무 크다.
타입스크립트를 쓰는 이유가 사라지는 것이다.
any타입을 쓰는 곳은 타입스크립트 컴파일러가 작동하지 않는다.
어떤 값이나 종류의 데이터가 어디에 저장될지 모르겠을때 대비하려고 쓸 수 있다.
unknown
any와는 다른 타입이다.
사용자가 뭘 입력할지 알 수 없기 때문에 unknown 인것이다.
에러 발생없이 어떤 값이든 저장할 수 있다.
let unknownInput: unknown;
unknownInput = 5;
unknownInput = 'string';
any와 비슷해보이는데, 동작이 다르다
만약 unknown 타입 변수에 있는 값을 다른 변수에 전달해보자.
let otherInput: string;
otherInput = unknownInput;
// 'unknown' 형식은 'string' 형식에 할당할 수 없습니다.
위와 같은 에러가 나오는 이유는 unknown 타입의 변수는 어떤 값이든 들어갈 수 있다는 점에 있다.
unknown 타입이라 해당 변수를 통해 문자열 이외의 값이 전달될 수 있기 때문이다.
unknown에서 any타입으로 바꿔버리면 에러는 사라질 것이다 ( any는 타입스크립트에서 타입체크를 안하기 때문이다 )
보이는 것처럼 unknown은 any보다 제한적이다.
unknown을 사용하면 현재 저장된 타입을 확인해야 문자열을 원하는 변수에 할당할 수 있다.
즉, 다른 곳에 전달하거나 생각하는 타입의 동작으로 사용하고 싶다면 런타임 타입체크가 필요하다
어떤 타입의 값이 전달될지 알수는 없지만, 타입에 따라 어떤 동작을 수행할지는 개발자는 알 수 있다.
할 수 없는 동작을 알 수 있도록 해준다는 점에서 any보다 낫다.
근데, 어떤 타입인지 확실한 상황이라면 그 타입으로 명시하는게 낫다.
reference : 유데미 타입스크립트 강의
'front-end > TypeScript' 카테고리의 다른 글
[TypeScript] AdvancedType - 1 (0) | 2023.08.08 |
---|---|
[TypeScript] Interface (0) | 2023.08.07 |
[TypeScript] 기본타입 (함수, 반환, 콜백) (0) | 2023.08.06 |
[TypeScript] 기본타입 (union, literal, typeAlias) (0) | 2023.08.06 |
[TypeScript] 기본타입 (객체, 배열) (0) | 2023.08.06 |