Type Challenges ์์
์ด๋ฒ์ ์คํ๋ฆฐํธ์์ ์๋ก ๋ฐฐ์ ๋ฐ์ ๋ฉํ ๋์ ์ถ์ฒ์ ๋ฐ์ ์์ํ๊ฒ ๋์๋ค.
๋ฌธ์
์ฒซ ๋ฌธ์ ๋ utility type์ธ Pick์ ๊ตฌํํ๋ ๋ฌธ์ ์ด๋ค. ๋์ด๋๋ easy
ํ์ด๊ณผ์
type MyPick<T extends {[key in string]:any}, K extends keyof T> = {[key in K]:T[K]}
์ต๋ํ ๋ค๋ฅธ ์ธํฐ๋ท ์๋ฃ๋ฅผ ์ฐพ์๋ณด๋ ค๊ณ ํ์ง ์์๋ค. ์ฐจ๊ทผ์ฐจ๊ทผ ์๊ฐํ๋ฉฐ ํ์๋ค.
๋ฐ์ ๊ฒ์์ ์๋ฌ๊ฐ ๋ด๋ค.
1๋ถ ๋์ ๊ณ ๋ฏผํ๋ค๊ฐ ๋ด๊ฐ ์ค์๋ฅผ ํ๋จ ๊ฑธ ๊นจ๋ฌ์๋ค.
type MyPick<T extends {[key in string]:any}, K extends keyof T> = {[key in K]:T[key]}
T[K] ๋ฅผ T[key]๋ก ๋ฐ๊ฟจ๋ค.
์๋ฌ๋ ๋ค ์ฌ๋ผ์ก์ง๋ง ์ด๊ฒ ์ ๋ต์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ค?
๋ฐ๋ก ์ด์๋ฅผ ๋จ๊ธฐ๋ ค๊ณ ํ์ง๋ง ๋น์ทํ ๋ต์์ด ์์ ๊ฒฝ์ฐ thumb up๋ง ๋จ๊ฒจ๋ฌ๋ผ๊ณ ํด์ ์ผ๋จ ์ ๋ต๋ค์ ์ดํด๋ณด๊ธฐ๋ก ํ๋ค.
์ ๋ต๋ค ์ดํด๋ณด๊ธฐ
์ ๋ต๋ค์ ์ดํด๋ณด๋ฉฐ ๋๋์ ์ ์ T ๋ extends์ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ก ํ์ ์ํค์ง ์์๊น? ํ๋ ๊ถ๊ธ์ฆ์ด ์์๋ค. ์ด์์ด๋ฉด T๊ฐ ๊ฐ์ฒด๋ง ๋ฐ๊ฒํ์ฌ ์ฌ์ฉํ๋ ์ชฝ์์ ์ค์๊ฐ ์์์ ๊ฒฝ๊ณ ํน์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋์ฐ๋๊ฒ ์ข์ง ์์๊น ์๊ฐํ๋ค.
์ด์ ์ฌ๋ฆฌ๊ธฐ
๋๋ ๊ฒน์น๋ ์ ๋ต์ ์์์ ์์ด๋ณด์ด๊ณ ๋ด ์๊ฒฌ์ ๋ํ ๋ค๋ฅธ ์ฌ๋๋ค์ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ด ์ด์๋ฅผ ์ฌ๋ ธ๋ค. ํ ๋ฒ ๋ต๋ณ์ ๊ธฐ๋ค๋ ค ๋ณด์.
(๋ต๋ณ ๋ฐ์์ ํฌ์คํ ์์ )
'ํ์ ์คํฌ๋ฆฝํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Typescript] Property dost not exist on type 'never' ํด๊ฒฐ๋ฒ (0) | 2023.09.03 |
---|