๐ง ์ง๋
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 |