Typescript의 union, any, unknown

Jean·2023년 7월 27일
0
post-thumbnail

변수에 들어올 값의 데이터 타입이 안 정해져있다 혹은 여러개의 타입이 필요하면...

union

가장 먼저 생각해야 할 union 타입이다
| 를 사용한다 or 라고 생각하면 된다

const name: string | number = 'kim'; //가능
//또는
const name: string | number = 123; //가능

이러면 name에는 문자열과 숫자가 둘 다 들어갈 수 있다

배열과 객체에는 다음과 같이 타입을 명시하면 된다

const arr: (number | string)[] = ['1',2,3]
const odj: {data : (number | string) } = { data : '123' }

any

말그대로 아무거나
아무 타입이나 넣어도 오류가 나지 않는다
자바스크립트와 크게 다를 것 없다

let name: any = 'kim'
name = 123
name = []
name = true

편하긴 하지만 타입스크립트를 쓰는 이유가 사라진다...
안정성도 사라짐으로 타입스크립트를 사용할 때는 웬만하면 지양해야한다

unknown

any를 대신하기 위해 나온 타입이다
any보다는 안전하다 똑같이 모든 타입을 넣을 수 있지만

let name: unknown = 'kim'
name = 123
name = []
name = true

타입은 무조건 unknown 타입이 된다

any와 unknown의 다른점

다른 변수에 넣기

unknown 타입은 다른 변수에 집어넣거나 하면 오류가 난다

const name: unknown =123
let num: number = name //error
let bool: boolean = name //error
let str: string = name //error

any는 오류를 내지 않는다

const name: any =123
let num: number = name 
let bool: boolean = name 
let str: string = name 

데이터 불러오기

unknown 타입은 unknown타입으로 고정이기에 아래와 같은 코드에서 에러가 난다

let name: unknown;
name[0];
name - 1;
name.data;

any일때는 에러가 나지 않고 작동한다

let name: any;
name[0];
name - 1;
name.data;

결론

any와 unknown는 타입스크립트를 쓴다면 지양해야하고
union타입을 애용하도록하자

profile
햇내기 개발자 지망생

0개의 댓글