์žฌ๋ฐŒ๊ฒŒ ํ•ฉ์‹œ๋‹ค

๊ธฐ๋กํ•˜๊ธฐ, ๊ฐ€์‹œํ™”ํ•˜๊ธฐ

TypeScript 2

React.FC ๋Œ€์‹  PropsWithChildren์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

React.FC์˜ ๋ฌธ์ œ์  props์—๋Š” ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๋ช…์‹œ์  props: props ํƒ€์ž…์— ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” props ์•”์‹œ์  props:@types/react๋“ฑ์— ์˜ํ•ด ์ž๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” props React.FC์˜ props๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ children์„ ํฌํ•จํ•œ๋‹ค. ์ฆ‰, React.FC๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ children์ด ์•”์‹œ์  props๊ฐ€ ๋œ๋‹ค. excess props: ์ปดํฌ๋„ŒํŠธ์— ๋„˜๊ฒจ์ง€์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” props โ†’ excess props์˜ ์กด์žฌ๋Š” POLA์›์น™์„ ์–ด๊ธฐ๊ฒŒ ๋งŒ๋“ ๋‹ค. POLA: Principle of Least Astonishment ์ปดํฌ๋„ŒํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์˜ˆ์ƒํ•œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™ ์•”์‹œ์  props์ธ children์€ excess props์— ํ•ด๋‹นํ•œ๋‹ค. ์‚ฌ์šฉ์ž ..

Typescript 2022.11.17

(์—๋Ÿฌ ํ•ด๊ฒฐ) Union type๊ณผ ํƒ€์ž… ๊ฐ€๋“œ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ

Union type | ์—ฐ์‚ฐ์ž๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํƒ€์ž…์ด ์—ฐ๊ฒฐ๋œ ํƒ€์ž…์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋•Œ | ์—ฐ์‚ฐ์ž๋Š” or์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ Union type์„ ํ™œ์šฉํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ ์ž ํ–ˆ๋‹ค. ๋ฌธ์ œ ์ •์˜ interface Props { data: LectureRoomsPerBuilding | LectureRoomInfo; children?: LectureRoomInfo[]; } ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ, ํƒ€์ž… ์ถ”๋ก ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. export interface LectureRoomInfo { room_name: string; room_uid: RoomUID; } export interface LectureRoomsPerBuilding { building_name: string; building..