[typescript] 2. union ,any, unknown 타입

지렁·2023년 10월 23일
1

타입을 확실히 해야하는 타입스크립트에서 타입을 미리 정하기 애매한 경우가 있다

📢 가장 좋은 Union type 사용

OR 연산자 같은 느낌으로 사용하는 것이다

let name: string | number = 'kim';
let age: (string | number) = 100;

괄호는 쳐도 되고 생략해도 된다!
name, age 변수엔 string 또는 number만 들어올 수 있게 된다
그리고 할당하는 순간 타입은 둘 중 하나로 변한다

array, object 경우에는? 🤔

아래처럼 하면 됨 !

var array: (number|string)[] = [1,'2',3]
var obj: {data : (number|string)} = { data : '123' }

변수에 정의된 Union 타입은 할당과 동시에 OR 역할이 사라지지만
array, object에 정의된 Union 타입은 OR 연산자가 유지된다

📢 any / unknown 타입

(요즘 타입스크립트는 unknown 타입을 사용한다고 한다)

아무거나 넣어도 되는 타입이다 (타입실드 해제 문법) -> 모든 자료형 허용해주는 것이 타입스크립트의 장점이다


🚫 에러발생 1

(any에서는 괜찮음)

let 이름: unknown;

let 변수1: string = 이름;
let 변수2: boolean = 이름;
let 변수3: number = 이름;

🚫 에러발생 2

(any에서는 괜찮음)

let 이름: unknown;
이름[0];
이름 - 1;
이름.data;

타입스크립트는 정확하고 확실한걸 좋아하기 때문에
확실하지않은 타입에 뺄셈해주는 등의 연산에서는 에러가 난다



💛연습문제

  • 타입 추가해서 에러 없애기
//practice1
let user: string = "kim";
let age: number | undefined = undefined;
let married: boolean = false;
let 철수: (string | number | undefined | boolean)[] = [user, age, married];

//practice2
let 학교: {
  score: (number | boolean)[];
  teacher: string;
  friend: string | string[];
} = {
  score: [100, 97, 84],
  teacher: "Phil",
  friend: "John",
};
학교.score[4] = false;
학교.friend = ["Lee", 학교.teacher];
profile
공부 기록 공간 🎈💻

0개의 댓글