포스트레이아웃
[ Typescript ] - 내가 기억하려고 만든 ts 타입 요약
2023-07-14
🏷️ table of Content
타입리터럴
: 오직 하나의 값을 나타내는 타입
- 모든 곳에서 일어날 수 있는 실수를 방지해 안전성을 추가로 확보해주는 강력한 언어 기능
타입의 종류
- any
- unknown
- boolean
- number
- bigint
- string
- symbol
- 객체
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 | 아직 값을 변수에 할당하지 않음 |
| Void | return 문을 포함하지 않는 함수 |
| 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을 이용하면 안전하지 않은 작업을 막도록 만들 수 있다.