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
- 프런트엔드
- 자바
- jsp
- JavaScript
- BACK-END
- SQL
- jpa
- 서버
- 프로그래머스
- 오라클
- 쿼리
- 코드테스트
- 프론트엔드
- MySQL
- 스프링부트
- 디자인 패턴
- Next.js
- java
- 정리
- oracle
- 미니정리
- 자바스크립트
- spring
- node.js
- 백엔드
- 스프링
- 알고리즘
- web
- 데이터베이스
- 코드 테스트
Archives
- Today
- Total
참치코더의 꿈 메모장
TypeScript / 타입 별칭, 인덱스 시그니처, enum, any, unknown, void, never 기본정리 본문
TypeScript
TypeScript / 타입 별칭, 인덱스 시그니처, enum, any, unknown, void, never 기본정리
참치깡 2025. 11. 15. 18:29728x90

|
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
// 타입 별칭
// 일일이 유저별로 type을 지정하면 몇 백개씩 지정해야 하므로
// type을 사용하면 해당 타입을 따로 지정해서 타입을 사용할 수 있다.
type User = {
id: number,
name: string,
nickname: string,
bio: string;
location?: string;
};
let user1: User = {
id: 1,
name: "홍길동",
nickname: "깔깔",
bio: "안녕하세요",
location: "서울시",
};
let user2: User = {
id: 2,
name: "임꺽정",
nickname: "껄껄",
bio: "Hello",
location: "강원도",
};
// 인덱스 시그니처
// 인덱스 시그니처를 사용하면 키값과 value값을 따로 지정할 수도 있다.
type CountryCodes = {
[key: string]: string;
};
let countryCodes: CountryCodes = {
Korea: "ko",
UnitedState: "us",
UnitedKingdom: "uk",
};
type CountryNumberCodes = {
[key: string]: number;
};
let countryNumberCodes: : CountryNumberCodes = {
Korea: 410,
UnitedState: 840,
UnitedKingdom: 826,
}
// enum 타입
// 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입
// 숫자를 지정하지 않으면, 0부터 숫자가 자동 부여되고 숫자를 지정한다면 해당 숫자부터 시작해 번호를
// 순차적으로 부여한다, 문자를 따로 작성한다면 해당 문자를 기본으로 사용한다.
// 추가적으로 enum타입은 한번 컴파일 되서 자바스크립트로 변환될때 사라지지 않는다.
// 숫자형 enum
enum Role {
ADMIN = 10,
USER,
GUEST,
}
// 문자형 enum
enum Language {
korean = "ko",
english = "en",
}
const user1 = {
name: "임꺽정",
role: Role.ADMIN, //10
language: Language.korean,
};
const user2 = {
name: "홍길동",
role: Role.USER, //11
language: Language.english,
};
|
cs |
|
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
46
|
// any
// 특정 변수의 타입을 모를때 사용하지만 정말 아무 값이나 입력을 받고, 해당 값을 또 다른 타입에 대입 및
// 어떤 함수라도(오류가 발생해도) 타이핑 단계에서 오류를 발생하지 않기때문에 거의 사용하지는 않는다.
let anyVar: any = 10;
// unknown
// any와 마찬가지로 unknown타입으로 지정한다면 거의 모든 값을 받을 수 있으나 typeof 연산자를 사용하여
// 해당 값이 실제 조건에 부합하면 해당 함수나 값을 대입할 수 있고, 해당 타입 비교를 하지 않는다면
// 오류가 발생하기 때문에 any 타입 보다 unknown타입을 사용하는 것이 더 안전하다.
let num: number = 10;
let unKnownVar: unknown;
if(typeof unKnownVar === 'number'){
num = unKnownVar;
}
// void
// 아무것도 없음을 의미하는 타입이다.
// 해당 타입을 선언하면, 오직 undefined만 담을 수 있고, 그 이상 아무런 값을 담을 수 없다.
function func1(): string {
return "hello";
}
function func2(): void {
console.log("hello");
}
let a: void;
// never
// never는 진짜 아무런 값도 담을 수가 없다, undefined도 받지 못한다.
// 해당 타입을 가진 어떤 함수나 변수는 불특정한 오류나 모순때문에 어떠한 값도 반환하지 않는다는것을
// 나타내기 위해 never값을 붙인다.
function func3(): never {
while (true) {}
}
function func4(): never {
throw new Error();
}
let a: never;
|
cs |
728x90
'TypeScript' 카테고리의 다른 글
| TypeScript / 타입 단언 정리 (0) | 2025.11.27 |
|---|---|
| TypeScript / 대수 타입, 타입 추론 정리 (0) | 2025.11.25 |
| TypeScript / 기본 타입 호환성, 객체 타입 호환성 정리 (0) | 2025.11.24 |
| TypeScript / 기본 타입 선언법 미니정리 (0) | 2025.11.13 |
| TypeScript / 기본적인 특징 및 기본 설정 사항 정리 (1) | 2025.11.09 |
Comments