μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

μžλ°”μŠ€ν¬λ¦½νŠΈ νƒ€μž…μŠ€ν¬λ¦½νŠΈ 차이, νƒ€μž…μŠ€ν¬λ¦½νŠΈ 기초

주영 🐱 2024. 4. 5. 09:43
728x90
λ°˜μ‘ν˜•

νƒ€μž…μŠ€ν¬λ¦½νŠΈ : νƒ€μž…μ„ λͺ…μ„Έν•œλ‹€. νƒ€μž…μ˜€λ₯˜λ₯Ό μ‰½κ²Œ 찾을 수 있고 μœ νš¨μ„± 검증에 용이

 

1. μžλ°”μŠ€ν¬λ¦½νŠΈ

function greet(name) {
    return "Hello, " + name + "!";
}

console.log(greet("John"));

 

2. νƒ€μž…μŠ€ν¬λ¦½νŠΈ - νŒŒλΌλ―Έν„°, λ¦¬ν„΄κ°’μ˜ νƒ€μž…μ„ λͺ…μ„Έ

function greet(name: string): string {
    return "Hello, " + name + "!";
}

console.log(greet("John"));

 


 

[νƒ€μž…μŠ€ν¬λ¦½νŠΈ 기초 문법]

 

λ³€μˆ˜ μ„ μ–Έ: λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” let λ˜λŠ” const ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€

let num: number = 10;

const message: string = "Hello,World!";

ν•¨μˆ˜ μ„ μ–Έ: ν•¨μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” νŒŒλΌλ―Έν„°μ™€ λ°˜ν™˜ νƒ€μž…μ„ λͺ…μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

function add(a: number, b: number): number {
    return a + b;
}

 

μΈν„°νŽ˜μ΄μŠ€(Interface): μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ 객체의 ν˜•νƒœλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

interface Person {
    name: string;
    age: number;
}

let person: Person = {
    name: "John",
    age: 30
};

λ°°μ—΄(Array): λ°°μ—΄μ„ μ„ μ–Έν•  λ•ŒλŠ” νƒ€μž… λ’€μ— λŒ€κ΄„ν˜Έ([])λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

let numbers: number[] = [1, 2, 3, 4, 5];

 


μ œλ„€λ¦­(Generic): μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜μ—¬ νƒ€μž…을 νŒŒλΌλ―Έν„°ν™”ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

function identity<T>(arg: T): T {
    return arg;
}

let result = identity<string>("Hello");


μ œλ„€λ¦­(Generic)은 νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜, 클래슀, μΈν„°νŽ˜μ΄μŠ€ 등을 λ‹€λ£° λ•Œ νŠΉμ •ν•œ νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•Šκ³ , μ—¬λŸ¬ μ’…λ₯˜μ˜ νƒ€μž…μ„ μ§€μ›ν•˜λ„λ‘ ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고 μœ μ—°μ„±μ„ κ°–μΆœ 수 μžˆμŠ΅λ‹ˆλ‹€.

function identity<T>(arg: T): T {
    return arg;
}
let output = identity<string>("Hello, TypeScript!"); 
console.log(output); // μΆœλ ₯: Hello, TypeScript!

let numOutput = identity<number>(123); 
console.log(numOutput); // μΆœλ ₯: 123

μœ„μ˜ identity ν•¨μˆ˜λŠ” μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜μ—¬ μž…λ ₯된 인자λ₯Ό κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. <T>λŠ” ν•¨μˆ˜ μ„ μ–Έμ—μ„œ νƒ€μž… νŒŒλΌλ―Έν„°λ₯Ό λ‚˜νƒ€λ‚΄λ©°, μ΄λŠ” ν•¨μˆ˜κ°€ 호좜될 λ•Œ μ‹€μ œ νƒ€μž…μœΌλ‘œ λŒ€μ²΄λ©λ‹ˆλ‹€. 첫 번째 ν˜ΈμΆœμ—μ„œλŠ” string νƒ€μž…μœΌλ‘œ λͺ…μ‹œλ˜μ—ˆμœΌλ―€λ‘œ ν•¨μˆ˜λŠ” λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜κ³ , 두 번째 ν˜ΈμΆœμ—μ„œλŠ” number νƒ€μž…μœΌλ‘œ λͺ…μ‹œλ˜μ—ˆμœΌλ―€λ‘œ ν•¨μˆ˜λŠ” 숫자λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

ν΄λž˜μŠ€μ—μ„œλ„ ν™œμš©κ°€λŠ₯ν•˜λ‹€

class Box<T> {
    private value: T;

    constructor(value: T) {
        this.value = value;
    }

    getValue(): T {
        return this.value;
    }
}

let boxOfString = new Box<string>("Hello");
console.log(boxOfString.getValue()); // μΆœλ ₯: Hello

let boxOfNumber = new Box<number>(123);
console.log(boxOfNumber.getValue()); // μΆœλ ₯: 123

 

μœ„μ˜ Box ν΄λž˜μŠ€λŠ” μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜μ—¬ μ–΄λ–€ νƒ€μž…μ˜ 값이든 담을 수 μžˆλŠ” μƒμžλ₯Ό λ§Œλ“­λ‹ˆλ‹€. 이λ₯Ό 톡해 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±κ³Ό μœ μ—°μ„±μ΄ ν–₯μƒλ©λ‹ˆλ‹€.

 



클래슀(Class): ν΄λž˜μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°μ²΄ μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

class Person {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    greet() {
        return `Hello, my name is ${this.name} and I'm ${this.age} years old.`;
    }
}

let person = new Person("John", 30);
console.log(person.greet());

λ°˜μ‘ν˜•