Bin's Blog

오늘의 TypeScript 본문

TypeScript

오늘의 TypeScript

hotIce 2023. 5. 4. 16:05
728x90

타입을 미리 정하기 애매할 때

  • Union Type(타입 2개 이상 합친 새로운 타입 만들기)
// Union Type(타입 2개 이상 합친 새로운 타입 만들기)
let 회원 :(number | string | boolean) = 123;
회원 = 123;

// 숫자 or 문자가 가능한 array 타입지정
let 회원들 : (number | string)[]  = [1, "2", 3];

// 숫자 or 문자가 가능한 object 타입지정
let 오브젝트: {data : string | number} = { data : '123' };


// 왜 타입맞는데 +1이 안 되니?
// 타입은 엄격한 거 좋아한다고 했다.
// union type은 허용하지 않는다. (새로운 타입을 만드는 거니까)
// string 타입 + 1(허용)| number 타입 + 1(허용), string | number타입 +1 (안돼)
let 나이 :string|number;
나이 + 1;
  • Any
// any 타입 모든 자료형 허용해준다. 그럼 타입 스크립트를 쓰는 이유가 없어진다.(타입실드 해제문법)-> 타입관련 버그가 나도 잡아주지 않는다.
let 이름 :any;
이름 = 123;
이름 = true;

// any 보이면 실드 죽는다.
let 변수1 :string = 이름;
  • unknown
// unknown 타입 모든 자료형 허용해준다.
let 이름들 :unknown;
이름들 = 123;
이름들 = [];


// unknown이어도 안 된다.
// 숫자타입이여야 숫자처럼 연산해준다.
let 내나이 :unknown = 1;
내나이 - 1;
  • 타입스크립트의 엄격함에 대해 - 간단한 수학연산도 타입맞아야한다.
  • any타입 보다 unknown 타입을 선호하는 이유는 타입 검사를 강제하기 때문에 더 안전한 타입이다. 이는 잠재적인 오류를 줄이고 더 견고한 코드를 작성할 수 있게 도와줍니다.
  • unknown 타입은 변수의 타입이 알려지지 않은 상태임을 나타낸다. 따라서 unknown 타입의 변수에 대해 어떠한 작업도 수행할 수 없고, 해당 변수를 사용하기 전에 타입을 명시적으로 검사해야 한다.
let unknownValue: unknown = "This is a string";

// 타입 검사를 수행
if (typeof unknownValue === "string") {
  // 이 블록 내에서는 unknownValue가 문자열 타입으로 간주
  console.log(unknownValue.toUpperCase());
} else {
  // unknownValue가 문자열이 아닌 경우의 처리를 여기에서 할 수 있다.
}
  • 위의 예에서 "typeof unknownValue === "string"은 명시적인 타입 검사이다. 이를 통해 "unknownValue"가 문자열인 경우에만 toUpperCase() 메서드를 호출하도록 보장하며, 이로 인한 런타임 에러를 방지할 수 있다.
728x90

'TypeScript' 카테고리의 다른 글

오늘의 TypeScript  (0) 2023.07.16
오늘의 TypeScript  (0) 2023.05.09
오늘의 TypeScript  (0) 2023.05.08
오늘의 TypeScript  (0) 2023.05.05
오늘의 TypeScript  (0) 2023.05.02