TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day10

2024. 8. 9. 01:03ยทlecture recap

๐Ÿง‰ ์ง„๋„

 

7. ์ œ๋„ค๋ฆญ (3/6)

  • ์ œ๋„ค๋ฆญ ์†Œ๊ฐœ
  • ํƒ€์ž… ๋ณ€์ˆ˜ ์‘์šฉํ•˜๊ธฐ
  • map, forEach ๋ฉ”์„œ๋“œ ํƒ€์ž… ์ •์˜ํ•˜๊ธฐ

๐Ÿฝ๏ธ ์š”์•ฝ

 

์ œ๋„ค๋ฆญ

/**
 * ์ œ๋„ค๋ฆญ
 */

// function func(value:unknown){
//     return value;
// }
function func<T>(value: T):T {
    return value;
}
// <T> = ํƒ€์ž…๋ณ€์ˆ˜. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ์ธ์ˆ˜์— ๋”ฐ๋ผ ํƒ€์ž…์ด ๊ฒฐ์ •๋จ
// ๋ฒ”์šฉ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ œ๋„ค๋ฆญํ•จ์ˆ˜


let num = func(10);
// num.toUpperCase();
  if(typeof num === 'number'){
      num.toFixed();
  }

let bool = func(true);
let str = func('string');

// ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•
// 1) 
let arr1 = func([1,2,3] as [number, number, number]);
// 2)
let arr2 = func<[number, number, number]>([1, 2, 3]);

ํƒ€์ž… ๋ณ€์ˆ˜ ์‘์šฉํ•˜๊ธฐ

/** 
 * ์ฒซ๋ฒˆ์งธ ์‚ฌ๋ก€: ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํƒ€์ž…์ด ๋‹ค๋ฅผ ๋•Œ *
 */

// function swap<T>(a: T, b: T) {
//     return [b, a];
// }
// const [a, b] = swap("1", 2);
// a๊ฐ€ string ์ด๋ผ b๊นŒ์ง€ string์œผ๋กœ ์ถ”๋ก ํ•ด๋ฒ„๋ ค์„œ ์˜ค๋ฅ˜.

function swap<T, U>(a: T, b: U) {
    return [b, a];
}
const [a, b] = swap("1", 2);



/** 
 * ๋‘๋ฒˆ์งธ ์‚ฌ๋ก€: ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด์„œ ์กฐ๊ฑด ์ œํ•œํ•˜๊ธฐ
 */

// function returnFirstValue<T>(data:T[]) {
//     return data[0];
// } data[0]๋ฒˆ์งธ ์š”์†Œ์˜ ํƒ€์ž…๋งŒ ์•Œ๋ฉด ๋˜๋‹ˆ๊นŒ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋งŒ T๋กœ ์•Œ์•„๋ณด๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ช‡๊ฐœ๋˜์ง€ ํƒ€์ž…์ด ๋ญ”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฐ‘์˜ ๋ฌธ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

function returnFirstValue<T>(data: [T, ...unknown[]]) {
    return data[0];
}

let num = returnFirstValue([0, 1, 2]); // 0

let str = returnFirstValue([1, "hello", "mynameis"]); //'hello'


/**
 *  ์„ธ๋ฒˆ์งธ ์‚ฌ๋ก€: ํƒ€์ž… ๋ณ€์ˆ˜์— ์กฐ๊ฑด์„ ๋‹ฌ์•„ ์ œํ•œํ•˜๊ธฐ 
 */

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});
// let var4 = getLength(10);

 

 

map, forEach ๋ฉ”์„œ๋“œ ํƒ€์ž… ์ •์˜ํ•˜๊ธฐ

/**
 * map method
 */

const arr =[1,2,3];
const newArr = arr.map((it)=> it*2);

function map<T,U>(arr:T[], callback: (item:T)=> U): 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)=> parseInt(it));
// map์€ ํ•ญ์ƒ ๊ฒฐ๊ณผ๊ฐ’ ํƒ€์ž…์ด ๊ฐ™์„ ํ•„์š”๋Š” ์—†์Œ


/**
 * forEach method
 */

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;
})

 

 

๐Ÿฅง ๊ณผ์ œ

 

Q1. ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์„ธ์š”.

function func<T>(value: T): T {
  return value;
}


Q2. ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์„ธ์š”.

function getLastValue<T>(data: [..any, T]): T {
  return data[data.length -1];
}

 

Q3. ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์„ธ์š”.

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

'lecture recap' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

CS50 : C์–ธ์–ด  (0) 2024.10.27
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day9  (0) 2024.08.09
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day8  (0) 2024.08.09
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day7  (0) 2024.08.09
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day6  (0) 2024.08.09
'lecture recap' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • CS50 : C์–ธ์–ด
  • TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day9
  • TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day8
  • TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day7
nuew
nuew
๐Ÿคธ ์žฌ์ฃผ ๋„˜๋Š” ์ค‘
  • nuew
    bloggg. . .๐Ÿฆ–๐Ÿ’ฅ
    nuew
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (88)
      • issue (10)
      • baekjoon (41)
      • lecture recap (11)
      • What I Learn (26)
      • retrospective (0)
      • maeil-mail (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    issue
    ๋ฐฑ์ค€
    Baekjoon
    css
    ํ•œ์ž…ํฌ๊ธฐ๋กœ์ž˜๋ผ๋จน๋Š”ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
    what i learn
    TypeScript
    media-query
    JavaScript
    Algorithm
    TailwindCSS
    zustand
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    Study
    modal
    js
    Node.js
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
nuew
TS: ํ•œ์ž…ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฑŒ๋ฆฐ์ง€_day10
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”