// number
let age: number = 30;
// string
let name: string = "Alice";
// boolean
let isStudent: boolean = true;
// null / undefined
let n: null = null;
let u: undefined = undefined;
특정 타입의 요소들로 구성된 배열
let list: number[] = [1, 2, 3];
고정된 수의 요소를 가지며, 각 요소는 특정 타입을 가짐
let tuple: [string, number];
tuple = ["hello", 10]; // OK
이름이 있는 상수들의 집합
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
모든 타입을 허용
타입 검사를 하지 않으며, 기존 자바스크립트 코드와의 호환성을 위해 사용
let notSure: any = 4;
notSure = "maybe a string instead";
일반적으로 함수에서 반환 값이 없음을 나타낼 때 사용
function warnUser(): void {
console.log("This is my warning message");
}
절대 발생하지 않는 값의 타입을 나타냄
예를 들어, 함수가 항상 예외를 던지거나 영원히 끝나지 않는 경우
function error(message: string): never {
throw new Error(message);
}
let person: { name: string, age: number } = {
name: "John",
age: 25
};
여러 타입 중 하나를 가질 수 있음을 나타냄
let value: string | number;
value = "hello"; // OK
value = 42; // OK
여러 타입을 결합한 새로운 타입을 만듦
interface A {
a: string;
}
interface B {
b: number;
}
let ab: A & B = { a: "hello", b: 42 };
타입에 별칭을 붙여 사용할 수 있음
type Point = {
x: number;
y: number;
};
let point: Point = { x: 10, y: 20 };
let 이름: string = "홍길동";
let 나이: number = 25;
let 학생여부: boolean = true;
함수의 매개변수와 반환(return) 값에도 타입을 지정할 수 있음
function 더하기(a: number, b: number): number {
return a + b;
}
let 결과 = 더하기(5, 3); // 결과: 8
배열의 요소 타입을 지정할 수 있음
let 숫자배열: number[] = [1, 2, 3, 4, 5];
let 문자열배열: string[] = ["사과", "바나나", "체리"];
객체의 프로퍼티에 타입을 지정할 수 있음
let 사람: { 이름: string; 나이: number; } = {
이름: "홍길동",
나이: 25
};
interface 사람 {
이름: string;
나이: number;
}
let 학생: 사람 = {
이름: "홍길동",
나이: 25
};
유니온 타입을 사용하면 변수에 여러 타입을 지정할 수 있음
let 아이디: number | string;
아이디 = 123;
아이디 = "abc123";
타입 별칭을 사용하여 타입에 이름을 붙일 수 있음
type 문자열또는숫자 = string | number;
let 값: 문자열또는숫자;
값 = "문자열";
값 = 123;
타입스크립트는 클래스 기반 객체 지향 프로그래밍 지원
class 동물 {
이름: string;
constructor(이름: string) {
this.이름 = 이름;
}
울다() {
console.log(`${this.이름}가(이) 울었습니다.`);
}
}
let 고양이 = new 동물("고양이");
고양이.울다(); // 출력: 고양이가(이) 울었습니다.
function identity<T>(arg: T): T {
return arg;
}
let output1 = identity<string>("Hello"); // 타입이 string으로 지정됨
let output2 = identity<number>(100); // 타입이 number로 지정됨
타입 단언을 사용하면 컴파일러에게 특정 변수의 타입을 확신시킬 수 있음
let 어떤값: any = "이건 문자열입니다.";
let 문자열길이: number = (어떤값 as string).length;
타입 가드를 사용하면 런타임에 타입을 좁힐 수 있음
function 타입확인(값: number | string) {
if (typeof 값 === "string") {
console.log("문자열입니다.");
} else {
console.log("숫자입니다.");
}
}
타입확인("안녕하세요"); // 출력: 문자열입니다.
타입확인(123); // 출력: 숫자입니다.
유틸리티 타입 등... 추후 정리