Utility tyles
타입스크립트는 공통타입 변환을 용이하게 하기 위해 유틸리티 타입을 제공한다.
유틸리티 타입은 전역으로 사용 가능하다.
(1) Partial <T>
프로퍼티(속성)을 선택적으로 만드는 타입을 구성한다.
주어진 타입의 모든 하위 타입 집합을 나타내는 타입을 반환한다.
interface Todo {
title: string
description: string
}
// obj매개변수 타입에 Partial Utility types을 추가
function updateTodo(obj: Partial<Todo>) {
return obj;
}
// updateTodo는 Todo 인터페이스를 객체로 받아와야하는데,
// result에서 넘겨주는 값은 일부 (2개중 1개)만 넘기기 때문에 Partial<Todo>를 하지 않으면 오류
const result = updateTodo({
title: "title",
})
console.log(result); // { title: 'title' } 출력
updateTodo function 함수는 Todo 인터페이스를 객체로 받아와야하는데,
result에서 넘겨주는 값은 일부 (2개중 1개)만 넘기기 때문에 Partial<Todo>를 하지 않으면 오류가 발생한다.
(2) Readonly <T>
프로퍼티(속성)을 읽기전용(read only) 으로 설정한 타입을 구성한다.
(3) Record <T>
프로퍼티의 집합 K로 타입을 구성한다.
타입의 프로퍼티들을 다른 타입에 매핍시키는 데 사용한다.
(4) Pick <T, K>
프로퍼티 K의 집합을 선택해 타입을 구성한다.
interface Todo {
title: string
description: string
completed: boolean
}
// Pick을 이용해 title 프로퍼티를 포함
type TodoPreview = Pick<Todo, "title">
const todo: TodoPreview = {
title: "Clean room"
}
(5) Omit <T, K>
모든 프로퍼티를 선택한 다음, K를 제거한 타입을 구성한다.
interface Todo {
title: string
description: string
completed: boolean
}
// Omit을 이용해 description 프로퍼티를 제외
type TodoPreview = Omit<Todo, "description">
const todo: TodoPreview = {
title: "Clean room",
completed: false,
}
이 경우에 Partial 타입을 사용해도 됨.
(6) Exclude <T, U>
T에서 U에 할당할 수 있는 모든 속성을 제외한 타입을 구성한다.
(7) Extract <T, U>
T에서 U에 할당할 수 있는 모든 속성을 추출하여 타입을 구성한다.
(8) NonNullable <T>
null 과 undefined를 제외한 타입
(9) Parameters <T>
함수 타입 T의 매개변수 타입들의 튜플 타입을 구성한다.
(10) ConstructorParameters <T>
생성자 함수 타입의 모든 매개변수 타입을 추출한다.
모든 매개변수 타입을 가지는 튜플 타입(T가 함수가 아닌 경우 never)을 생성한다.
(11) ReturnType <T>
함수 T의 반환타입으로 구성된 타입을 생성한다.
(12) Required <T>
T의 모든 프로퍼티가 필수로 설정된 타입을 구성한다.
함수
매개변수: 함수를 정의할 떄 사용되는 변수를 의미한다. 인자 값 또는 파라미터 라고도 한다.
인수: 함수를 호출할 때 사용되는 값을 의미한다.
function add(x, y) {
return x+y;
}
add(2, 5);
여기서 x와 y는 파라미터(인자)라고 하고, 2와 5는 인수값이라고 한다.
일급 객체 (First-class object)
자바스크립트와 타입스크립트의 함수는 일급객체이다.
다른 객체들에 일반적으로 적용가능한 연산을 모두 지원하는 객체를 일급 객체라고 한다.
- 다른 함수에 매개변수로 제공할 수 있다.
- 함수에서 함수를 반환하는게 가능하다.
- 변수에 함수 할당이 가능하다.
let elice = function() { return "coding"; };
console.log(elice()); // "coding"
함수를 정의해 변수에 저장하고, 변수를 호출하면 함수실행 결과가 반환되는 것을 확인할 수 있다.
함수 선언 방법
함수 선언식
함수 표현식
화살표 함수 표현식
단축형 화살표 함수 표현식
함수 생성자 (new 사용. 잘 쓰이지 않음)
타입 추론(Contextual Typing)
방정식의 한쪽에만 타입이 있더라도 반대쪽 타입을 추론할 수 있다.
이를 통해 타입을 유지하기 위한 노력을 줄일 수 있다.
function add(a: number, b: number) {
const res = a + b;
return res.toString();
}
res 변수는 number이고,
return 반환 값은 string이라는 것이 명백하기 때문에 function의 반환값을 따로 타입을 명시하지 않아도 된다.
'프론트엔드 > 프론트엔드 필수지식' 카테고리의 다른 글
[Typescript] Generic 제네릭 / Union 유니언 (0) | 2022.10.14 |
---|---|
[Typescript] 인터페이스의 프로퍼티, 타입, 전략패턴 (0) | 2022.10.14 |
[Typescript] 객체지향 프로그래밍 (Object Oriented Prog-) (0) | 2022.10.12 |
[Typescript] 타입 명시 (0) | 2022.10.12 |
ES6 - 모듈화, 화살표 함수, forEach, map, reduce (0) | 2022.09.27 |