Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- BACK-END
- 스프링부트
- SQL
- MySQL
- 프로그래머스
- 알고리즘
- 자바
- jpa
- 프론트엔드
- 자바스크립트
- Next.js
- 쿼리
- node.js
- JavaScript
- 스프링
- spring
- 데이터베이스
- java
- 미니정리
- 코드테스트
- 오라클
- 프런트엔드
- 코드 테스트
- 정리
- 백엔드
- oracle
- web
- 서버
- 디자인 패턴
- jsp
Archives
- Today
- Total
참치코더의 꿈 메모장
TypeScript / 대수 타입, 타입 추론 정리 본문
728x90

TypeScript 대수타입
- 대수타입은 수학적 조합 관점에서 타입을 설명하는 방법이고, 크게 합 타입(UNION) 과 곱 타입
(Intersection)으로 구성된다.
합 타입 (Union Type)
- 여러 개 중 하나일 수 있는 타입
특징
- 상태가 여러 가지 중 하나만 가능할 때 사용
- 프론트엔드에서 API 상태 관리, 폼 상태 표현 등에 많이 쓰임
- 협소한 타입으로 구성해서 런타임 오류를 줄이기 좋다.
|
1
2
3
4
5
6
7
8
9
|
type ResponseData = string | null;
function printData(data: ResponseData) {
if(data === null) {
console.log('No data');
} else {
console.log(data.toUpperCase());
}
}
|
cs |
곱 타입 (Intersection Type)
- 여러 타입을 모두 포함하는 타입
특징
- 두 타입의 교집합을 모두 포함하는 새로운 타입 생성
- mixin 패턴 구현 시 자주 사용됨
|
1
2
3
4
|
type A = { name: string};
type B = {age: number};
const ab: A & B = {name: "철수", age: 20};
|
cs |
타입스크립트 타입 추론(Type Inference)
- 타입스크립트가 코드만 보고 자동으로 타입을 결정하는 것
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
let a = 10; // number
let s = "hello"; // string
// 타입스크립트는 값을 보고 자동으로 해당 타입을 추론한다.
function add(a: number, b: number) {
return a + b;
}
// 반환 타입을 명시하지 않아도 number로 추론
function greet(name = "철수"){
return `Hello, ${name}`;
}
// name: string 으로 자동 추론
function wrap<T>(value: T){
return {value};
}
const data = wrap(10);
// T -> number 로 추론됨
// 타입 넓히기(Widening) and 좁히기(Narrowing)
let x = "hello";
// 넓혀서 string으로 추론 -> 어떤 문자열이라도 대입 가능
const y = "hello";
// 좁혀서 "hello" 리터럴 타입으로 추론 -> 정확히 'hello'만 가능
const user = {
name: "철수",
age: 20,
};
// {name: string, age: number}
|
cs |
728x90
'TypeScript' 카테고리의 다른 글
| TypeScript / 타입 좁히기(Type Narrowing) 정리 (0) | 2025.11.27 |
|---|---|
| TypeScript / 타입 단언 정리 (0) | 2025.11.27 |
| TypeScript / 기본 타입 호환성, 객체 타입 호환성 정리 (0) | 2025.11.24 |
| TypeScript / 타입 별칭, 인덱스 시그니처, enum, any, unknown, void, never 기본정리 (0) | 2025.11.15 |
| TypeScript / 기본 타입 선언법 미니정리 (0) | 2025.11.13 |
Comments