변수 선언
타입스크립트에서 변수를 선언하는 방식은 다음과 같습니다.
[선언키워드] [변수명]: [타입]
- const: 상수를 선언하는 키워드로, 한 번 할당된 값은 변경할 수 없습니다.
- let: 변수를 선언하는 키워드로, 값을 재할당할 수 있습니다. 블록 스코프를 따르며, 호이스팅이 발생하지 않습니다.
- var: 변수를 선언하는 키워드로, let과 비슷하지만 함수 스코프를 따르며 호이스팅이 발생합니다. 일반적으로는 var보다는 let을 권장합니다.
// const 키워드를 사용한 상수 선언
const myConst: number = 5;
// let 키워드를 사용한 변수 선언
let myVariable: string = "Hello";
// var 키워드를 사용한 변수 선언
var myVar: number = 10;
Typescript에서 지원하는 타입
타입 | 설명 | 예시 |
boolean | 참(true)과 거짓(false)을 나타내는 논리 타입 | let isDone: boolean = false; |
number | 숫자 타입, 배정밀도 64비트 부동소수점 형식 IEEE 754 | let decimal: number = 6; |
string | 문자열 타입 | let color: string = "blue"; |
object | 모든 객체를 나타내는 타입 | let obj: object = { key: "value" }; |
Array | 배열 타입 | let list: number[] = [1, 2, 3]; 또는 let list: Array<number> = [1, 2, 3]; |
Tuple | 고정된 요소 수만큼의 타입을 특정 순서로 표현하는 배열 타입 | let tuple: [string, number] = ["hello", 10]; |
Enum | 열거형 타입, 숫자 또는 문자열 값 집합을 정의하는 타입 | typescript enum Color { Red, Green, Blue }; let c: Color = Color.Green; |
any | 모든 타입을 허용하는 동적 타입 | let notSure: any = 4; notSure = "maybe a string instead"; |
void | 일반적으로 함수에서 반환값이 없을 때 사용하는 타입 | typescript function warnUser(): void { console.log("This is a warning message"); } |
null | 값이 없음을 나타내는 타입 | let n: null = null; |
undefined | 값이 할당되지 않았음을 나타내는 타입 | let u: undefined = undefined; |
never | 절대 발생하지 않는 값의 타입 | typescript function error(message: string): never { throw new Error(message); } |
객체 타입
객체 타입은 자바스크립트에서 가장 중요한 데이터 구조 중 하나입니다. 객체는 여러 개의 속성(property)을 가지고 있는 데이터 컬렉션이라고 생각하면 됩니다.
예를 들어, 사람에 대한 정보를 표현한다고 해봅시다. 이때 사람의 이름, 나이, 취미 등의 정보를 각각의 속성으로 가질 수 있습니다. 이를 코드로 표현하면 다음과 같습니다!
const rezero = {
name: 'rem',
age: 18,
hobby: ['Movie', 'creation']
};
여기서 name, age, hobby가 속성(property)이며, 각 속성에는 문자열, 숫자, 배열과 같은 값이 할당되어 있습니다.
자바스크립트에는 이 외에도 유용한 내장 객체들이 있습니다.
- Date: 시간 정보를 다룰 때 사용
- Array: 여러 개의 값을 순서대로 가지는 객체
- Map, WeakMap, Set, WeakSet: 키-값 쌍이나 유일한 값들을 가지는 객체 타입
- JSON: 데이터를 교환하기 위한 경량 데이터 형식
이처럼 객체 타입은 자바스크립트에서 매우 중요한 역할을 합니다. 개발 시 데이터를 효과적으로 표현하고 관리할 수 있습니다. 이 외 표준 라이브러리에는 더 많은 내장 객체가 있습니다. MDN 문서 참고
특수 타입
any
any 타입은 TypeScript에서 모든 종류의 값(숫자, 문자열, 객체 등)을 나타낼 수 있는 특수한 타입입니다. 이는 JavaScript의 동적 타입과 유사한 성질을 가지며, 컴파일 시 타입 체크를 하지 않는 특성을 가지고 있습니다. 따라서 any 타입의 변수는 어떤 타입의 값이든 할당할 수 있으며, 다른 타입의 변수에 할당되거나 함수에 인자로 전달될 때에도 타입 체크가 이루어지지 않습니다.
예시 코드
let myAny: any = 5;
myAny = "Hello"; // OK
myAny = { key: "value" }; // OK
let anotherVariable: number = myAny; // 컴파일 시 타입 에러가 발생하지 않음
unknown
unknown 타입은 TypeScript 3.0에서 도입된 타입으로, any와 비슷하게 어떤 타입의 값이든 할당할 수 있습니다. 하지만 unknown 타입을 가진 변수는 그 자체로는 다른 변수에 할당하거나 사용할 수 없습니다. 사용하기 전에 타입을 명시적으로 확인하거나 타입 캐스팅을 통해 다른 타입으로 변환해야 합니다.
예시 코드
let userInput: unknown;
let userName: string;
userInput = 5;
userInput = "Hello";
// userName = userInput; // 에러: 'unknown' 타입은 'string' 타입에 할당할 수 없음
if (typeof userInput === "string") {
userName = userInput; // 타입 체크 후 할당 가능
}
never
never 타입은 함수의 리턴 타입으로 주로 사용되며, 함수가 어떠한 값도 반환하지 않을 때 사용됩니다. 또한, 다른 변수에 할당될 수 없는 타입으로 사용될 수 있습니다.
예시 코드
function error(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
// 무한 루프
}
}
let cannotAssign: never;
// cannotAssign = "Hello"; // 에러: 'never' 타입은 어떤 타입에도 할당할 수 없음
Reference
'프로그래밍 > TypeScript' 카테고리의 다른 글
[TypeScript] 타입스크립트의 함수 정의와 타입 명시 (0) | 2024.07.17 |
---|---|
[TypeScript] 리액트 프로젝트에서 타입스크립트 사용하기 (0) | 2024.07.16 |
타입스크립트 공부 자료 (2) | 2024.07.14 |
[TypeScript] ORM 라이브러리 비교 (2) | 2024.07.12 |
TypeScript란? JavaScript와의 차이점 (4) | 2024.07.09 |