Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- AI
- flex사용법
- 자바스크립트문법 #노마드코더 #
- 바닐라JS #바닐라JS로크롭앱만들기 #
- DestructuringAssignment
- ES6란
- 자바스크립트filter
- iterationprotocol
- whisper-1
- JAVA #Swing #자바스윙 #스윙
- 레이아웃모델
- Realtime
- 이터러블프로토콜
- interable
- 자바스크립트sort함수
- 이터레이터프로토콜
- chatGPT
- tts-1
- realtimeapi
- ime란
- 자바객체 #자바인스턴스 #객체와인스턴스차이점
- OpenAI
- flex특징
- gpt-4o-transcribe
- ime일본어처리
- 배열재정렬함수
- javascript문법
- 이터레이션프로토콜
- flexgrid차이점
- 음성채팅
Archives
- Today
- Total
끄적끄적 개발기록
[타입스크립트] Tuple, Enum , Any 본문
타입스크립트는 자바스크립트와 달리 타입을 지정해줄 수 있다!!
js
"use strict";
function add(a, b) {
return a + b;
}
const sum = add(1, 2);
console.log(sum);
ts
function add(a: number, b: number) {
return a + b;
}
const sum: number = add(1, 2);
console.log(sum); // 3
만약 sum에서 number가 아닌 string을 부여해준다면 TS2322라는 에러 코드가 뜬다!
**TS2322는 변수 타입에 대한 오류!
Tuple
튜플은 배열과 유사하지만 정해진 타입의 고정된 길이 배열을 표현한다는 차이점이 있다!
하지만 push()나 splice() 등 길이가 변경되는 함수를 막는 것은 불가!
let tuple: [string, number];
tuple = ['a', 1];
tuple = ['a', 1, 2]; // Error - TS2322
tuple = [1, 'a']; // Error - TS2322
변수를 한꺼번에 튜블로 지정해줄 수 있다.
// Variables
let userId: number = 1234;
let userName: string = 'HEROPY';
let isValid: boolean = true;
// Tuple
let user: [number, string, boolean] = [1234, 'HEROPY', true];
console.log(user[0]); // 1234
console.log(user[1]); // 'HEROPY'
console.log(user[2]); // true
2차원 배열도 사용 가능
let users: [number, string, boolean][];
// Or
// let users: Array<[number, string, boolean]>;
users = [[1, 'Neo', true], [2, 'Evan', false], [3, 'Lewis', true]];
let tuple: [1, number];
tuple = [1, 2];
tuple = [1, 3];
tuple = [2, 3]; // Error - TS2322: Type '2' is not assignable to type '1'.
push를 통한 튜플 길이 변경
let tuple: [string, number];
tuple = ['a', 1];
tuple = ['b', 2];
tuple.push(3);
console.log(tuple); // ['b', 2, 3];
tuple.push(true); // Error - TS2345: Argument of type 'true' is not assignable
//to parameter of type 'string | number'.
읽기전용 튜플 생성도 가능
let a: readonly [string, number] = ['Hello', 123];
a[0] = 'World'; // Error - TS2540: Cannot assign to '0' because it is a read-only property.
Enum
Enum은 숫자 혹은 문자열 값 집합에 이름을 부여할 수 있는 타입
값 종류가 일정한 범위로 정해져 있는 경우 유용
0부터 시작해서 1씩 증가한다
enum Week {
Sun =0
Mon =1
Tue =2
Wed =3
Thu =4
Fri =5
Sat =6
}
console.log(week.Sun); //6
enum Week {
Sun =0
Mon =1
Tue =2
Wed =23 //수동으로 값 변경 가능
Thu =24
Fri =25
Sat =26
}
console.log(Week);
console.log(Week.Sun); // 0
console.log(Week['Sun']); // 0
console.log(Week[0]); // 'Sun'
문자열도 가능!
enum Color {
Red = 'red',
Green = 'green',
Blue = 'blue'
}
console.log(Color.Red); // red
console.log(Color['Green']); // green
Any
Any는 모든 타입을 의미
자바스크립트처럼 모든 타입의 값 할당 가능
언제 사용할까?
불가피하게 타입을 단언할 수 없는 경우에 사용!
let any: any = 123;
any = 'Hello world';
any = {};
any = null;
//다양한 타입의 값을 가진 배열도 가능
const list: any[] = [1, true, 'Anything!'];
이러한 Any타입을 방지하기 위해서는 컴파일 옵션 const list: any[] = [1, true, 'Anything!']; 를 통해 Any를 사용했을 경우 에러를 던질 수 있다!
'개발 > Typescript' 카테고리의 다른 글
| [타입스크립트]인터페이스 (0) | 2022.04.08 |
|---|---|
| [타입스크립트]타입 추론(Inference)과 타입 단언(Assertions) (0) | 2022.04.06 |
| [타입스크립트] Void, Never , Union , Intersection ,Function (0) | 2022.04.06 |
| [타입스크립트] Void, Never , Union , Intersection ,Function (0) | 2022.04.06 |
| [타입스크립트] Unknown, Object , Null, Undefined (0) | 2022.04.06 |