타입 스크립트의 기본 타입
타입스크립트로 변수나 함수와 같은 자바스크립트 코드에 타입을 정의할 수 있다.
타입스크립트의 기본 타입에는 크게 다음 12가지가 있다.
- Boolean
- Number
- String
- Object
- Array
- Tuple
- Enum
- Any
- Void
- Null
- Undefined
- Never
타입스크립트는 일반 변수, 매개 변수, 객체 속성 등에: TYPE과 같은 형태로 타입을 지정할 수 있다.
let a: string = 'text'; // 문자열
let b: number = 0; // 숫자형
let c: boolean = true; // 논리형
let d: any = true; // 어떤 타입이 올지 모를 때
let e: string | number = '0'; // 문자열이나 숫자가 올 때
Boolean
let isLoggedIn: boolean = false;
TIP
위와 같이 :를 이용하여 자바스크립트 코드에 타입을 정의하는 방식을 타입 표기(Type Annotation)라고 한다.
Number
let num: number = 10;
String
let str: string = 'hi';
Array
배열은 아래와 같이 두가지 방법으로 타입을 선언할 수 있다.
// 문자열만 가지는 배열
let arr01: string[] = ['a', 'b', 'c'];
let arr02: Array<string> = ['a', 'b', 'c'];
// 숫자형만 가지는 배열
let arr03: number[] = [1, 2, 3];
let arr04: Array<number> = [1, 2, 3];
// Union 타입(다중 타입)의 문자열과 숫자를 동시에 가지는 배열
let arr05: (string | number)[] = [1, 'a', 2, 'b', 'c', 3];
let arr06: Array<string | number> = [1, 'a', 2, 'b', 'c', 3];
// 배열이 가지는 값의 타입을 추측할 수 없을 때 any를 사용할 수 있다.
let arr07: (any)[] = [1, 'a', 2, 'b', 'c', 3];
let arr08: Array<any> = [1, 'a', 2, 'b', 'c', 3];
Function
함수는 파라미터에 각각 타입을 선언해 주며, 파라미터 우측에는 해당 함수의 리턴값 타입도 선언해 주면 된다.
function sum(a: number, b: number): number {
return a + b;
}
console.log(sum(2, 3)); // 5
리턴값을 숫자형으로 선언하였는데 다른 값이 리턴된다면 역시 에러가 난다.
function sum(a: number, b: number): number {
return null; // error
}
Object
기본적으로 typeof 연산자가 object로 반환하는 모든 타입을 나타낸다. 여러 타입의 상위 타입이기 때문에 그다지 유용하지 않다.
let obj: object = {};
let arr: object = [];
let func: object = function() {};
let date: object = new Date();
보다 정확하게 타입 지정을 하기 위해 아래와 같이 객체 속성들에 대한 타입을 개별적으로 지정할 수 있다.
let user: { name: string, age: number } = {
name: 'a',
age: 20
};
console.log(user); // {name: "a", age: 20}
Tuple
배열과 유사하다. 차이점은 정해진 타입의 요소 개수 만큼의 타입을 미리 선언후 배열을 표현한다.
let tuple: [string, number];
tuple = ['a', 0];
console.log(tuple); // ["a", 0]
Enum
숫자 혹은 문자열 값 집합에 이름을 부여할 수 있는 타입으로, 값의 종류가 일정한 범위로 정해져 있는 경우 유용하다. 기본적으로 0부터 시작하며, 값은 1씩 증가한다.
enum obj {
a,
b,
c,
d,
e
}
console.log(obj);
// 0: "a"
// 1: "b"
// 2: "c"
// 3: "d"
// 4: "e"
// a: 0
// b: 1
// c: 2
// d: 3
// e: 4
Any
Any는 모든 타입을 의미하며, 기존의 자바스크립트 변수와 마찬가지로 어떠한 타입의 값도 할당할 수 있다. 불가피하게 타입을 선언할 수 없는 경우, 유용할 수 있다.
let any:any = 'String';
any = 0;
console.log(any); // 0
any = true;
console.log(any); // true
Void
빈 타입인 Void는 리턴값이 없는 함수에서 사용된다. 리턴값의 타입을 명시하는 곳에 작성하며, 리턴값이 없는 함수는 undefined를 반환한다.
function hello(): void {
console.log("hello");
}
console.log(hello()); // undefined
never
Never 타입은 절대 발생할 수 없는 타입을 나타낸다.
function errorMsg() {
throw new Error("오류 발생!");
}
console.log(errorMsg()); // Uncaught Error: 오류 발생!
errorMsgd 함수는 오류를 발생시키기 때문에 null, undefined를 포함한 어떠한 값도 반환하지 않는다. 이럴 경우 never 타입을 사용하면 된다.
'Programming Language > vanillajs' 카테고리의 다른 글
[ JavaScript ] 간단한 Todo List 구현 (0) | 2022.08.05 |
---|