변수에 들어올 값의 데이터 타입이 안 정해져있다 혹은 여러개의 타입이 필요하면...
가장 먼저 생각해야 할 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' }
말그대로 아무거나
아무 타입이나 넣어도 오류가 나지 않는다
자바스크립트와 크게 다를 것 없다
let name: any = 'kim'
name = 123
name = []
name = true
편하긴 하지만 타입스크립트를 쓰는 이유가 사라진다...
안정성도 사라짐으로 타입스크립트를 사용할 때는 웬만하면 지양해야한다
any를 대신하기 위해 나온 타입이다
any보다는 안전하다 똑같이 모든 타입을 넣을 수 있지만
let name: unknown = 'kim'
name = 123
name = []
name = true
타입은 무조건 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타입을 애용하도록하자