Types
νμ
μ μ λ°©λ²
:
λ₯Ό μ΄μ©νμ¬ νμ
μ μ: Type Annotation
Javascript Basic Types
const num: number = -6;
const str: string = 'hello';
let str1: 'hi' | 'hello' | 'hey' = 'hi';
const boal: boolean = false;
let age: number | undefined;
let person2: string | null;
let obj: object; // μ μΈμ κ°λ₯νμ§λ§ μ΄λ λͺ¨λ κ°μ²΄κ° λ€ λ€μ΄μ¬ μ μμ΄μ ν¨μ©μ±μ΄ μλ€.
let person: {name: string, age: number} = {
name: 'Crystal',
age: 20
};
let arr: number[] = [1,2,3];
let arr: Array<number> = [1,2,3];
Function definition
function add(num1: number, num2: number): number {
return num1 + num2;
}
// optional parameter
function printName(firstName: string, lastName?: string) {
console.log(firstName);
console.log(lastName); // undefined
}
// default parameter
function printMessage(message: string = 'default message') {
console.log(message);
}
// Rest parameter
function addNumbers(...numbers: number[]): number {
return numbers.reduce((a, b) => a + b);
}
Typescript Types
// unknown: λ¬΄μ¨ νμ
μ΄ μ€λμ§ λλ λͺ¨λ₯Έλ€. μ¦, λͺ¨λ νμ
μ΄ μ¬ μ μμ΄ ν¨μ©μ± μμ
let notSure: unknown = 0;
// any: μ΄λ€ νμ
μ΄λ λ΄μ μ μλ€. μ΄ μμ λͺ¨λ νμ
μ΄ μ¬ μ μμ΄ ν¨μ©μ± μμ
let anything: any = 0;
// void: ν¨μμμ μ무 κ²λ 리ν΄νμ§ μμμ μλ―Έ
function print(): void {
console.log('hello');
return;
}
let unuseful: void = undefined; // μλ―Έκ° μλ μ½λ..
// never: ν¨μμμ 리ν΄μ μ μΈνμ§ μμμ μλ―Έ(ν¨μκ° λλμ§ μμμ μλ―Έ)
function throwError(message: string): never {
// message -> server (log)
// 1) throw new Error(message);
// 2) while (true) {}
}
// Tuple: λ°°μ΄μ κΈΈμ΄κ° κ³ μ λκ³ κ° μμμ νμ
μ΄ μ§μ λμ΄ μλ λ°°μ΄ νμ.
// μ¬μ©μ κΆμ₯νμ§ μμ. μλνλ©΄ κ°λ
μ±μ΄ λ§μ΄ λ¨μ΄μ§.
// interface, type alias, Object, class ννλ‘ μ¬μ©ν κ²μ κΆμ₯.
let arr: [string, number] = ['hi', 10];
// Enum: νΉμ κ°(μμ)λ€μ μ§ν©
// .μ΄λ μΈλ±μ€ λ²νΈλ‘ μ κ·Όμ΄ κ°λ₯νλ©°, μΈλ±μ€λ₯Ό μ¬μ©μ νΈμλ‘ λ³κ²½λ κ°λ₯ν©λλ€.
// μ¬μ©μ κΆμ₯νμ§ μμ. μλνλ©΄ μ«μν μ΄λμ κ°μ μ¬ν λΉν μ μμ΄ μ€μΌμ μνμ΄ μκ³ , tree shakingμ΄ μλλ λ¬Έμ λ μλ€.
// λ€λ₯Έ λͺ¨λ°μΌ ν΄λΌμ΄μΈνΈμ λ§μΆ°μΌ ν λ λΆλμ΄νκ² μ¬μ©.
// λμμΌλ‘ type alias union typeμ μ¬μ©νκ±°λ κ°μ²΄λ₯Ό as const ννλ‘ μ¬μ©κ°
enum Avengers { Capt = 2, IronMan, Thor }
let hero: Avengers = Avengers.Capt;
let hero2: Avengers = Avenger[2] // Capt
Type alias
μλ‘μ΄ νμ μ μ μν¨. λͺ¨λ λ°μ΄ν° νμ μ μ μν μ μμΌλ©°, μΆκ°λ‘ String Literal Typesλ κ°λ₯ν¨.
type Text = string;
const name: Text = 'sujeong';
type Student = {
name: string;
age: number;
};
const student: Student = {
name: 'ellie',
age: 12,
};
// String Literal Types
type Status = 'loading' | 'success' | 'failure';
let status: Status = 'loading';
Type Inference
νμ μ€ν¬λ¦½νΈκ° νμ μ μλμΌλ‘ μΆλ‘ ν¨.
Type Assertion
νμ μ λͺ μμ μΌλ‘ μ§μ ν΄ μ€
function jsStrFunc(): any {
return 2;
}
const result = jsStrFunc();
console.log((result as string).length);
console.log((<string>result).length);
Last updated
Was this helpful?