[TS] TypeScript

Chanki Hong·2023년 3월 30일
0

TypeScript

목록 보기
2/9
post-thumbnail

TypeScript

  • JS의 Dynamic typing 지원 => 2 - '1', +'8' 등이 number 연산 가능.
  • 스케일이 커질 수록 문제 발생 가능성.
  • TS는 JS 문법을 그대로 사용하면서, 타입문법을 더해서 사용하게 해줌.
  • 또한 Error message가 정확.

개요

Type alias

  • Type을 변수에 담아서 사용 가능.
  • type 키워드를 이용하며, type명은 보통 대문자로 시작.
type Name = string | number;
let 이름: Name = 'kim';

Union type

  • 복수의 타입 설정.
  • |(or 연산자) 이용.
let 이름 :string | number = 'kim';
  • Union type은 객체에서도 응용 가능.
const 회월들: (number | string)[] = [1, '2', 3];
const 오브젝트: { a: string | number } = { a: 'dfsd' };
  • Union type은 더하기 등이 불가능함.
let 나이: string | number;
나이 + 1; // '+' 연산자를 'string | number' 형식에 적용할 수 없습니다.
  • stringnumber 둘다 더하기 연산이 가능한데, 왜 에러가 날까?
  • Union type은 string 타입도 number 타입도 아닌 string | number 타입(새로운 타입)이기 때문.

Option

  • 타입 지정에서 해당 타입을 옵션으로 두려면 ? 사용.
  • 변수?: number변수: number | undefined(union type) 와 같은 의미.
  • 객체에서 옵션을 줄 수 있는데, key?: number 형식으로 지정 가능.

원시 값(primitive value)

  • string, number, boolean, null, undefined, bigint 등 가능.
let 이름: string = 'kim';
이름 = 123; // number 값이 아니라는 에러 발생.

객체(object)

  • 객체나 배열 타입은 [], {}로 설정.
  • 값의 형식지정 해야함.
const 이름: string[] = ['kim', 'park'];
const 나이: { age: number } = { age: 3 };

객체

// 옵션 설정
const 나이: { age?: number } = { };
  • 객체의 수 많은 속성을 지정할 때는,
type Member2 = {
  // 모든 obj 속성의 key와 value는 string
  [key: string]: string;
};
const john2: Member2 = { name: 'kim' };

Tuple type

  • 배열(array)에서 사용 가능.
  • 원소의 순서 마다 타입 지정.
type Member = [number, boolean];
const john: Member = [123, true];

function

  • parameter; 매개변수retrun; 반환 값에 타입 지정.
  • 또한 파라미터에 타입이 지정되어있으면, 함수 호출시 파라미터가 비어있으면 오류.
  • number를 매개변수로 받고, number를 리턴하는 함수.
function 함수(x: number): number {
  return x * 2;
}
  • void로 리턴을 맊을 수 있음.
function 함수(x: number): void {
  1 + 1;
}

class

class User {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
}

any vs. unknown

  • any는 타입 해제.
  • unknown은 정해지지 않은 타입.
  • 꼭 이용해야 한다면 비교적 unknown이 안전.
let 이름: any;
이름 = 123;
이름 = false;
이름 = 'ㅇㅇㅇ';
이름 = [];
let 변수: string = 이름; // 오류가 나지 않음.
let 이름2: unknown;
이름2 = 123;
이름2 = false;
이름2 = 'ㅇㅇㅇ';
이름2 = [];
let 변수: string = 이름2; // 'unknown' 형식은 'string' 형식에 할당할 수 없습니다.

✅ TIP

  • TS는 변수 초기화(선언, 할당) 과정에서 자동으로 타입이 지정됨.
  • 모든 타입을 매번 지정할 필요가 없음.
let 이름 = 'kim'; // let 이름: string
let 나이 = 300; // let 나이: number
let 결혼 = true; // let 결혼: boolean
const 회원들 = [1, 2, 3]; // const 회원들: number[]

0개의 댓글