μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (μ œλ„€λ¦­)

2025. 6. 12. 13:29Β·πŸ“‚ Program Language Study/πŸ“„ TypeScript 곡뢀
 

ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript) κ°•μ˜ | μ΄μ •ν™˜ Winterlood - μΈν”„λŸ°

μ΄μ •ν™˜ Winterlood | ,   ν”„λ‘ νŠΈμ—”λ“œμ˜ ν”Όν•  수 μ—†λŠ” λŒ€μ„Έ νƒ€μž…μŠ€ν¬λ¦½νŠΈ,μ΄μ œλŠ” μ œλŒ€λ‘œ 정볡할 λ•Œκ°€ μ™”μŠ΅λ‹ˆλ‹€! 😎 [사진]μΈν”„μ½˜ 2023 'νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μ™œ 그럴까?' λ°œν‘œμžμ˜ κ°•μ˜μž…λ‹ˆλ‹€.   🧐 λ°°μ›Œ

www.inflearn.com

 

πŸ“Œ μ œλ„€λ¦­ μ†Œκ°œ

// βœ… μ œλ„€λ¦­ ν•¨μˆ˜ (Generic Function)
// ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ™€ λ°˜ν™˜κ°’μ˜ νƒ€μž…μ„ μœ μ—°ν•˜κ²Œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•΄μ€Œ
function func<T>(value: T): T {
    return value;
}

// μ‚¬μš© μ˜ˆμ‹œ
let num = func(10);
let bool = func(true);
let str = func("string");

// Tλ₯Ό [number, number, number] νŠœν”Œλ‘œ 직접 μ§€μ •ν•œ μ˜ˆμ‹œ
let arr = func<[number, number, number]>([1, 2, 3]);

 

πŸ“Œ νƒ€μž… λ³€μˆ˜ μ‘μš©ν•˜κΈ°

// βœ… μ œλ„€λ¦­ νƒ€μž… λ³€μˆ˜ μ‘μš©

// 사둀 1: νƒ€μž… λ³€μˆ˜λ₯Ό 2개 μ‚¬μš©ν•˜λŠ” 경우
// → μ„œλ‘œ λ‹€λ₯Έ νƒ€μž…μ˜ 두 값을 λ°›μ•„ μˆœμ„œλ₯Ό λ°”κΏ” λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
function swap<T, U>(a: T, b: U) {
    return [b, a];
};

const [a, b] = swap("1", 2);

// 사둀 2: 배열을 λ°›μ•„ 첫 번째 값을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
// → 일반적인 λ°°μ—΄ νƒ€μž…μ„ λ°›μ•„ 첫 번째 μš”μ†Œ λ°˜ν™˜
function returnFirstValue<T>(data: [T, ...unknown[]]) {
    return data[0];
}

let num = returnFirstValue([0, 1, 2]);
let str = returnFirstValue([1, "hello", "my", "name", "is"]);

// 사둀 3: νƒ€μž… μ œν•œ (Constraint)
// → length ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§„ νƒ€μž…λ§Œ 받을 수 μžˆλ„λ‘ μ œν•œ
function getLength<T extends { length: number }>(data: T) {
    return data.length;
}

let var1 = getLength([1, 2, 3]);
let var2 = getLength("12345");
let var3 = getLength({length: 10});

 

πŸ“Œ map, forEach λ©”μ„œλ“œ νƒ€μž… μ •μ˜ν•˜κΈ°

// βœ… map λ©”μ„œλ“œ
// λ°°μ—΄μ˜ 각 μš”μ†Œμ— 콜백 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œ κ²°κ³Όλ₯Ό μƒˆ λ°°μ—΄λ‘œ λ§Œλ“€μ–΄ λ°˜ν™˜
const arr = [1, 2, 3];
const newArr = arr.map((it) => it * 2);

function map<T, U>(arr: T[], callback: (item: T) => U) {
    let result = [];
    for (let i = 0; i < arr.length; i++) {
        result.push(callback(arr[i]));
    }

    return result;
}

map(arr, (it) => it * 2);
map(["hi", "hello"], (it) => it.toUpperCase());
map(["1", "2", "3"], (it) => parseInt(it));

// βœ… forEach λ©”μ„œλ“œ
// λ°°μ—΄μ˜ 각 μš”μ†Œμ— λŒ€ν•΄ 콜백 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜μ§€λ§Œ 값을 λ°˜ν™˜ X
const arr2 = [1, 2, 3];
arr2.forEach((it) => console.log(it));

function forEach<T>(arr: T[], callback: (item: T) => void) {
    for (let i = 0; i < arr.length; i++) {
        callback(arr[i]);
    }
}

forEach(arr2, (it) => { 
    console.log(it.toFixed()); 
});

forEach(["123", "456"], (it) => {
    it;
})

 

πŸ“Œ μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€ & μ œλ„€λ¦­ νƒ€μž… 별칭

// βœ… μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€
interface KeyPair<K, V> {
    key: K;
    value: V;
};

// μ‚¬μš© μ‹œμ—λŠ” λ°˜λ“œμ‹œ κΊ½μ‡ (<>)λ₯Ό μ‚¬μš©ν•˜μ—¬ νƒ€μž…μ„ λͺ…μ‹œ
let keyPair: KeyPair<string, number> = {
    key: "key",
    value: 0,
};

let keyPair2: KeyPair<boolean, string[]> = {
    key: true,
    value: ["1", "2"],
};

// βœ… 인덱슀 μ‹œκ·Έλ‹ˆμ²˜μ™€ μ œλ„€λ¦­ μΈν„°νŽ˜μ΄μŠ€
// κΈ°μ‘΄ 방식: κ°’ νƒ€μž…μ΄ κ³ μ •λœ 객체
interface OriginalMap {
    [key: string]: number;
};

let originalMap: OriginalMap = {
    key: 1,
    key2: 2
};

// μ œλ„€λ¦­ 방식: value νƒ€μž…μ„ μœ μ—°ν•˜κ²Œ μ„€μ • κ°€λŠ₯
interface GenericMap<V> {
    [key: string]: V;
};

let genericMap: GenericMap<string> = {
    key: "value",
};

let genericMap2: GenericMap<boolean> = {
    key: true,
};

// βœ… μ œλ„€λ¦­ νƒ€μž… 별칭
// μΈν„°νŽ˜μ΄μŠ€μ™€ 거의 λ™μΌν•œ κ΅¬μ‘°μ§€λ§Œ type ν‚€μ›Œλ“œλ‘œ μ •μ˜
type MyMap<V> = {
    [key: string]: V;
};

let myMap: MyMap<string> = {
    key: "hello",
}

 

πŸ“Œ μ œλ„€λ¦­ 클래슀

// βœ… μ œλ„€λ¦­ 클래슀
class List<T> {
    constructor(private list: T[]) {}

    push(data: T) {
        this.list.push(data);
    }

    pop() {
        return this.list.pop();
    }

    print() {
        console.log(this.list);
    }
};

const numberList = new List([1, 2, 3]);
numberList.pop();
numberList.push(4);
numberList.print();

const stringList = new List(["1", "2"]);
stringList.push("hello");

 

πŸ“Œ ν”„λ‘œλ―ΈμŠ€μ™€ μ œλ„€λ¦­

// βœ… Promise
// μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ PromiseλŠ” 비동기 μž‘μ—…μ„ μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 객체이며,
// νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” Promiseκ°€ μ œλ„€λ¦­μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆμ–΄ κ²°κ³Όκ°’μ˜ νƒ€μž…μ„ λͺ…ν™•νžˆ μ§€μ • κ°€λŠ₯

// μ•„λž˜ μ˜ˆμ œμ—μ„œλŠ” 3초 후에 숫자 20을 λ°˜ν™˜ν•˜λŠ” Promiseλ₯Ό 생성
// resolveλŠ” μž‘μ—…μ΄ μ„±κ³΅ν–ˆμ„ λ•Œ 호좜되며, rejectλŠ” μ‹€νŒ¨ μ‹œ 호좜
const promise = new Promise<number>((resolve, reject) => { // <>λ₯Ό 톡해 λ°˜ν™˜ νƒ€μž… μ •μ˜
    setTimeout(() => {
        resolve(20); /// 성곡 μ‹œ 숫자 20을 전달
        reject("μ‹€νŒ¨ 이유"); // μ‹€νŒ¨ μ‹œ μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 전달
    }, 3000);
});

promise.then((response) => { // .then()은 성곡 κ²°κ³Όλ₯Ό 처리
    console.log(response * 10);
})

promise.catch((err) => {
    if (typeof err === "string") {
        console.log(err);
    }
})

// βœ… Promiseλ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜ μ •μ˜
interface Post {
    id: number;
    title: string;
    content: string;
};

function fetchPost(): Promise<Post> {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve({
                id: 1,
                title: "κ²Œμ‹œκΈ€ 제λͺ©",
                content: "κ²Œμ‹œκΈ€ 컨텐츠",
            })
        }, 3000);
    });
}

const postRequest = fetchPost();

postRequest.then((post) => {
    console.log("κ²Œμ‹œκΈ€ ID:", post.id);
    console.log("κ²Œμ‹œκΈ€ 제λͺ©:", post.title);
    console.log("κ²Œμ‹œκΈ€ λ‚΄μš©:", post.content);
});

 

⬇️ λ‹€μŒ λ‚΄μš©μ€ μ•„λž˜ 글을 μ°Έκ³ 

 

μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž… μ‘°μž‘ν•˜κΈ°)

ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript) κ°•μ˜ | μ΄μ •ν™˜ Winterlood - μΈν”„λŸ°μ΄μ •ν™˜ Winterlood | , ν”„λ‘ νŠΈμ—”λ“œμ˜ ν”Όν•  수 μ—†λŠ” λŒ€μ„Έ νƒ€μž…μŠ€ν¬λ¦½νŠΈ,μ΄μ œλŠ” μ œλŒ€λ‘œ 정볡할 λ•Œκ°€ μ™”μŠ΅λ‹ˆλ‹€! 😎 [사진]

isliife2.tistory.com

 

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ“‚ Program Language Study > πŸ“„ TypeScript 곡뢀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (쑰건뢀 νƒ€μž…)  (0) 2025.06.13
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž… μ‘°μž‘ν•˜κΈ°)  (0) 2025.06.13
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (클래슀)  (0) 2025.06.11
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (μΈν„°νŽ˜μ΄μŠ€)  (0) 2025.06.11
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (ν•¨μˆ˜μ™€ νƒ€μž…)  (0) 2025.06.11
'πŸ“‚ Program Language Study/πŸ“„ TypeScript 곡뢀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (쑰건뢀 νƒ€μž…)
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (νƒ€μž… μ‘°μž‘ν•˜κΈ°)
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (클래슀)
  • μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (μΈν„°νŽ˜μ΄μŠ€)
YeonSu02
YeonSu02
Email : rkddustn2519@naver.com
  • YeonSu02
    IsLiife2
    YeonSu02
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기
      • πŸ“‚ Computer Science
      • πŸ“‚ Unity Engine Study
        • πŸ“„ Unity μΈν”„λŸ° κ°•μ˜
        • πŸ“„ Unity 유튜브 κ°•μ˜
        • πŸ“„ Unity μ°Έκ³ 
        • πŸ’» Game Development
      • πŸ“‚ Quality Assurance Study
        • πŸ”₯ μ—˜λ¦¬μŠ€ SW QAνŠΈλž™
        • πŸ“„ QA 곡뢀
        • πŸ“š QA μ±… 리뷰
      • πŸ“‚ Program Language Study
        • πŸ“„ C# 곡뢀
        • πŸ“„ 파이썬 곡뢀
        • πŸ“„ JavaScript 곡뢀
        • πŸ“„ TypeScript 곡뢀
      • πŸ“‚ Additional Study
        • πŸ“„ Git
        • πŸ“„ Docker
        • πŸ“„ Jenkins
        • πŸ“„ Firebase
        • πŸ“„ License
      • πŸ“‚ Experience
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
  • 링크

    • GitHub
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    μ •μ²˜κΈ° 독학
    qa자격증
    qa λΆ€νŠΈμΊ ν”„
    λΆ€νŠΈμΊ ν”„ μΆ”μ²œ
    자격증
    μ—‘μ…€
    istqb-ctfl
    QA
    μ •μ²˜κΈ° ν•„κΈ°
    μ—˜λ¦¬μŠ€νŠΈλž™
    μ»΄ν“¨ν„°ν™œμš©λŠ₯λ ₯
    μ •μ²˜κΈ° μ‹€κΈ°
    qa κ°•μ˜
    qa 직무 ꡐ윑
    ν…ŒμŠ€νŒ…μžκ²©μ¦
    μ»΄ν™œ
    κ΅­λΉ„λΆ€νŠΈμΊ ν”„ μΆ”μ²œ
    qa μ±… 리뷰
    qa μ±…
    μ—˜λ¦¬μŠ€νŠΈλž™ ν›„κΈ°
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
YeonSu02
μΈν”„λŸ° κ°•μ˜ - ν•œ μž… 크기둜 μž˜λΌλ¨ΉλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈ (μ œλ„€λ¦­)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”