
type a : any ;
말 그대로 어떤 것도 될 수 있는 타입이다.
단점은 어떤 것도 될 수 있기 때문에 타입스크립트의 보호를 받지 못한다.
타입스크립트를 쓰는 의미가 없기 때문에 안 쓰는걸 추천한다.
타입을 확실하게 모를때 사용한다. 내가 작성한 코드의 타입을 기준으로 타입을 찾아준다.
type Player = {
<T> (arg: T) => T
}
타입을 모를때 사용하는 타입이라 둘 다 상관 없는거 아닌가? 라고 생각했는데
둘은 엄연한 차이가 있다.
먼저, any는 타입스크립트의 보호를 받지 못하기 때문에 자바스크립트에서 동작하는 말도 안되는(?) 코드들이 에러가 나지 않는다.
type SuperPrint = {
(arr: any[]): any
}
const superPrint: SuperPrint = (arr) => arr[0]
let a = superPrint([1, "b", true]);
a.toUpperCase();
위 코드에서는 배열 안에 number인 1이 대문자로 변환하는게 말이 안되지만 에러가 안난다.
반면, generic은 개발자가 요구하는대로 call signature를 생성해준다.
type arr = {
<T> ( arg: T[] ) : void
}
const box : arr = (arg) => console.log(arg)

명확한 타입을 찾아주기때문에 잘못된 코드를 작성하면 에러가 발생한다.