StudyForYou / ouahhan-typescript-with-react

์šฐ์•„ํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ with ๋ฆฌ์•กํŠธ ์Šคํ„ฐ๋”” ๋ ˆํฌ ๐Ÿงต
4 stars 0 forks source link

๐Ÿ”ฅtype-challenges_01_ 4 - Pick #37

Closed hyeyoonS closed 2 months ago

hyeyoonS commented 2 months ago

Pick ์‰ฌ์›€ #union #built-in

by Anthony Fu @antfu

๋„์ „ํ•˜๊ธฐ    English ็ฎ€ไฝ“ไธญๆ–‡ ๆ—ฅๆœฌ่ชž Portuguรชs (BR)

T์—์„œ K ํ”„๋กœํผํ‹ฐ๋งŒ ์„ ํƒํ•ด ์ƒˆ๋กœ์šด ์˜ค๋ธŒ์ ํŠธ ํƒ€์ž…์„ ๋งŒ๋“œ๋Š” ๋‚ด์žฅ ์ œ๋„ค๋ฆญ Pick<T, K>์„ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ํ•˜์„ธ์š”.

์˜ˆ์‹œ:

interface Todo {
  title: string
  description: string
  completed: boolean
}

type TodoPreview = MyPick<Todo, 'title' | 'completed'>

const todo: TodoPreview = {
    title: 'Clean room',
    completed: false,
}

๋Œ์•„๊ฐ€๊ธฐ ์ •๋‹ต ๊ณต์œ ํ•˜๊ธฐ ์ •๋‹ต ๋ณด๊ธฐ

๊ด€๋ จ๋œ ๋ฌธ์ œ๋“ค

3ใƒปOmit
drizzle96 commented 2 months ago
type MyPick<T, K extends keyof T> = {
  [key in K]: T[key]
}
hyeyoonS commented 2 months ago
type MyPick<T, K extends keyof T> = {
  [key in K]: T[key];
};

๋„์›€ ๋  ์ˆ˜๋„ ์žˆ๋Š”... ํ’€์ด๊ณผ์ •

  1. ๊ฐ์ฒด ํƒ€์ž…์„ ๋ณ€ํ˜•ํ•˜๋Š” ํƒ€์ž…์ด๋ฏ€๋กœ ๋งต๋“œ ํƒ€์ž…์„ ์ด์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2๊ฐœ์˜ ํƒ€์ž… ๋ณ€์ˆ˜ T์™€ K๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํƒ€์ž…์ด๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    type Pick<T, K> = any;
  2. T๋กœ ๋ถ€ํ„ฐ K ํ”„๋กœํผํ‹ฐ๋งŒ ๋ฝ‘์•„๋‚ธ ๊ฐ์ฒด ํƒ€์ž…์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งต๋“œ ํƒ€์ž…์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    type Pick<T, K> = {
    };
  3. K๊ฐ€ T์˜ key๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์œ ๋‹ˆ์˜จ ํƒ€์ž…์ž„์„ ๋ณด์žฅํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹น

type Pick<T, K extends keyof T> = {
  [key in K]: T[key];
};
summerkimm commented 2 months ago
type MyPick<T, K extends keyof T> = {
  [key in K]: T[key]
}
SoobinJ commented 2 months ago
type MyPick<T, K extends keyof T> = {
  [P in K]: T[P];
}