(TS) generic 과 any 차이

dolfin·2023년 5월 23일

TypeScript

목록 보기
1/7
post-thumbnail

any 타입

type a : any ;

말 그대로 어떤 것도 될 수 있는 타입이다.
단점은 어떤 것도 될 수 있기 때문에 타입스크립트의 보호를 받지 못한다.
타입스크립트를 쓰는 의미가 없기 때문에 안 쓰는걸 추천한다.

generic 타입

타입을 확실하게 모를때 사용한다. 내가 작성한 코드의 타입을 기준으로 타입을 찾아준다.

사용방법

type Player = {
<T> (arg: T) => T 
}

generic과 any의 차이

타입을 모를때 사용하는 타입이라 둘 다 상관 없는거 아닌가? 라고 생각했는데
둘은 엄연한 차이가 있다.
먼저, 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)

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

profile
no risk no fun

0개의 댓글