일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- TypeScript
- 코테
- NextJs
- 바닐라js
- 정보처리기사
- reactrouter
- 코딩테스트
- 파이썬
- styled-components
- 이벤트버블링
- 리액트
- 코딩테스크
- react
- 백준
- 정처기
- 정처기필기
- 자바스크립트
- 백준5086
- 백준10798
- 투두리스트
- Vue
- 백준10815
- zustand
- Vue3
- 타입스크립트
- 10815
- JS
- 백준2501
- 정처기실기
- JavaScript
Archives
- Today
- Total
윤시의 블로그
[TypeScript] union, any, unknown 타입 본문
1. Union Type
string 또는 number와 같이 다양한 타입을 허용하고 싶다면, | 연산자로 정의한다.
변수의 타입은 할당 시점에 하나로 좁혀진다.
let 이름 : string | number = "kim";
let 나이 : (string | number) = 100;
//Array와 Object에도 적용
var 어레이 : (number | string)[] = [1,"2", 3];
var 오브젝트 : {data : number | string} = { data : "123");
2. any 타입
어떤 자료든 할당 가능, 타입체크 해제
남발하면 타입 안정성이 떨어짐
let 이름 : any = "kim";
이름 = 123;
이름 = [];
3. unknown 타입
any와 비슷하지만 더 안전한 타입
unknown 타입은 그대로 유지되며, 연산/조작하려면 narrowing(타입 좁히기) 또는 assertion(타입 단언) 필요
let 이름 : unknown = "kim";
이름 = 123;
//아래처럼 조작 시 에러 발생
let 변수 : string = 이름;
연산 시 에러
• string | number 변수로 연산 불가
: 이유는 타입스크립트는 “확실한 타입”만 허용하기 때문.
string | number는 Union 타입으로, string 또는 number 중 하나가 할당될 수 있음. 하지만, 타입스크립트는 실행 전 정확한 타입을 보장하고자 하기 때문에, 어떤 타입이 실제로 할당될지 확신할 수 없는 상태에서는 연산 허용X
let 나이 : string | number;
나이 + 1; //에러 발생
unknown 타입 변수로 연산 불가
unknown 타입은 모든 값이 할당될 수 있는 타입으로, 아직 타입이 확정되지 않은 상태를 의미함. 타입스크립트에서는 unkown 타입이 정확히 어떤 타입인지 알지 못하기 때문에, 연산을 수행하려 할 때 타입이 확실하지 않다는 이유로 에러를 발생시킴
let 나이 : unknown = 1;
나이 + 1; // 에러 발생
연습문제
1. 다음 변수 4개에 타입을 지정해보기
(age 변수엔 숫자도 들어올 수 있음)
let user = 'kim';
let age = undefined;
let married = false;
let 철수 = [user, age, married];
// 풀이
let user : string = 'kim';
let age : undefined | number = undefined;
let married : boolean = false;
let 철수 : (string|number|undefined|boolean)[] = [user, age, married];
2. 학교라는 변수에 타입 지정해보기
let 학교 = {
score : [100, 97, 84],
teacher : 'Phil',
friend : 'John'
}
학교.score[4] = false;
학교.friend = ['Lee' , 학교.teacher]
//풀이
let 학교 : {
score : (number | boolean)[],
teacher : string,
friend : string | string[]
}
= {
score : [100, 97, 84],
teacher : 'Phil',
friend : 'John'
}
학교.score[4] = false;
학교.friend = ['Lee', 학교.teacher]
'TypeScript' 카테고리의 다른 글
[TypeScript] 타입 추론, 타입 단언, 타입 가드, 타입 좁히기(Narrowing) (2) | 2025.03.23 |
---|---|
[TypeScript] interface 문법, &(intersection) (0) | 2025.03.03 |
[TypeScript] 열거형(enum) (1) | 2025.01.07 |
[TypeScript] 제네릭(Generics) < > (1) | 2025.01.06 |