[TypeScript] 타입 정의

뒹귤·2024년 7월 2일
0

타입스크립트

목록 보기
2/5

타입스크립트의 기본 타입

any 타입 제외, 한 번 선언한 타입은 바꿀 수 없다.

  • string
  • number
  • boolean
  • object
  • Array : ex) 문자열 배열일 때 Array<string>, string[] 둘 다 사용 가능
  • tuple : 요소의 개수와 타입을 지정한 특별한 배열 [string, number]
  • any : 모든 타입을 수용
  • null
  • undefined

📌 꼭 타입을 사용해야 하는 경우

  • 함수정의
  • 객체 사용
  • 타입이 명확한 변수 등은 타입 추론을 사용하는 것을 권장함
  • optional parameter : 함수의 매개변수를 선택적으로 전달 받고 싶을 때, 매개변수명 뒤에 ? 추가

  • optional property(인터페이스) : 객체의 속성을 선택적으로 부여하고 싶을 때, 속성 명 뒤에 ? 추가

  • union type : 여러 종류의 타입을 허용하고 싶을 때
    - | (or 연산자)로 연결

  • type alias : 사용자 정의 타입
    - 객체의 복잡한 타입을 설정할 때 권장
    - type 키워드로 선언
    - 파스칼케이스로 네이밍

  • intersection type : 타입 여러개를 결합해서 새로운 타입 생성
    - &(and 연산자) 로 연결
    - 타입 별칭을 확장할 때 주로 사용

  • 인터페이스
    - 객체의 타입을 정의할 때 사용
    - 클래스의 타입 지정에 사용, implements 키워드


📌 타입 별칭 vs 인터페이스

  • 타입 별칭이 꼭 필요한 경우가 아니면 인터페이스 사용을 권장
  • 인터페이스가 더 객체지향 개념과 가깝다.
  • 타입 별칭: 기본 타입, 유니언 타입, 인터섹션 타입, 유틸리티 타입, 맵드 타입 등의 정의에 사용
  • 인터페이스: 객체, 클래스의 타입 정의
  • 인터페이스 - readonly 키워드
    - 읽기 전용 프로퍼티
    - 객체 생성시에만 값 할당이 가능하고 이후에는 수정할 수 없음

  • 인터페이스 - index signature
    - 속성명을 명시하지 않고 속성명의 타입과 속성값의 타입을 정의
    - 일반 속성값의 타입은 인덱스 시그니처의 타입과 같아야 한다.

	interface User {
		name: string;
		email: string;
		age: number;
		address?: string;
		phone?: string;
		hobby?: string;
	}

	// 인덱스 시그니처 사용
	interface User {
		name: string;
		email: string;
		age: number;
		[param: string]: string | number;
	}
  • 클래스, 인터페이스 상속
    - extends 키워드 뒤에 상속받을 부모 클래스 지정
    - 계층 구조 상속, 다중 상속 가능

  • 인터페이스 재선언(선언 병합)
    - 동일한 이름의 인터페이스를 중복으로 선언하면 자동으로 병합되어 확장된다.

📌 타입 확장

  • 타입 별칭 : & 연산자로 확장
  • 인터페이스: extends 키워드로 확장, 선언 병합
profile
🌱 FE 

0개의 댓글

관련 채용 정보