[ Typescript ] - 내가 기억하려고 만든 ts 타입 요약

2023-07-14

typescript
인덱스 시그니쳐
타입별칭

타입리터럴

: 오직 하나의 값을 나타내는 타입

  • 모든 곳에서 일어날 수 있는 실수를 방지해 안전성을 추가로 확보해주는 강력한 언어 기능

타입의 종류

  1. any
  2. unknown
  3. boolean
  4. number
  5. bigint
  6. string
  7. symbol
  8. 객체
let a = ({ b: number } = {
  b: 12,
}); //{ b : number}

인덱스 시그니처(index signature)

[key : T]: U 같은 문법을 인덱스 시그니처라 부르며 타입 스크립트에 어떤 객체가 여러 키를 가질 수 있음을 알려준다.
"이 객체에서 모든 T타입의 키는 U타입의 값을 갖는다." 라고 해석 할 수 있다.
인덱스 시그니처를 이용하면 명시적으로 정의한 키 외에 다양한 키를 객체에 안전하게 추가할 수 있다.
인덱스 시그니처의 키(T)는 반드시 number나 string타입에 할당할 수 있는 타입이어야 한다.

let airplan: {
  [seatNumber: string]: string,
} = {
  "34d": "bosule",
  "20a": "chosule",
};

타입별칭

(let,const,var로) 변수를 선언해서 값 대신 변수로 칭하듯이 타입 별칭으로 타입을 가릴수 있다.

	type Age = number
	type Person = {
		name : string
      	age : Age // 타입별칭을 이용해 좀 더 이해하기 쉽게 정의
    }

타입별칭은 복잡한 타입을 반복하지 않도록 해주며 변수가 어떤 목저으로 사용되었는지 쉽게 이해할 수 있도록 도와준다.(어떤 사람들은 변수명으로 설명하는 것보다 타입명으로 설명하는 것을 선호)

유니온과 인터섹션 타입

유니온(union: 합집합) (|) / 인터섹션(intersection: 교집합) (&)

집합처럼 연산을 수행할 수 있다.

?

튜플

배열의 서브타입.
튜플은 길이가 고정되었고 각 인덱스의 타입이 알려진 배열의 일종이다.
선언할 때 타입을 명시해야한다.

let a: [number] = [1];
// [ 이름, 성씨, 생년 ] 튜플
let b: [string, string, number] = ["malcolm", "chosule", 2130];
b = ["today", "next", "sunday", 223]; // 에러: 'string'은 'number' 타입에 할당할 수 없음

최소 길이를 갖도록 지정할 때는 나머지 요소(...)를 사용할 수 있다.

	let friends: [string, ...string[]] = ['sara','chosule','bosule','jihe']
	//이형배열
	let list : [number, boolean, ...string[]] = [1, false , 'a', 'e','g']

튜플은 이형배열을 안전하게 관리할 뿐 아니라 배열 타입의 길이도 조절한다. 이런 기능을 잘 활용하면 순수 배열에 비해 안전성을 높일 수 있으므로 튜플 사용을 권장한다.

void 와 never

void
: 명시적으로 아무것도 반환하지 않는 함수의 반환 타입(예: console.log)를 말한다.

never
: 절대 반환하지 않는(예외를 던지거나 영원히 실행되는) 함수 타입을 가리킨다.

타입의 의미

타입의미
null값이 없음
undefined아직 값을 변수에 할당하지 않음
Voidreturn 문을 포함하지 않는 함수
never절대 반환하지 않는 함수

열거형(enum)

해당 타입으로 사용할수 있는 값을 열거하는 기법.
키를 값에 할당하는 , 순서가 없는 자료구조.
키가 컴파일 타임에 고정된 객체라고 생각하면 쉽다.

	enum Language {
		English,
        Spanish,
        Russian
    }
	enum Lagnguage {
		English = 0,
        Spanish = 1,
        Russian = 2
    }
 
	let myFirstLanguage = Language.Russian //Language
    let mySecondLanguage = Language['English'] //Language

타입스크립트는 여러 열거형 정의 중 한가지값만 추론할 수 있으므로 열거형을 분할할 때 주의해야 한다.
열거형에 문자열 값을 사용하거나 문자열과 숫자 값을 혼합할 수 있다.

더 안전한 열거형 타입인 const enum을 이용하면 안전하지 않은 작업을 막도록 만들 수 있다.

© 2023 chosule blog by Next.js