๐ ํ๋ก์ ํธ - ๋กค๋ง
1๏ธโฃ ๋ฌธ์ ์ํฉ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ฌ์
์ปดํฌ๋ํธ์ props ํ์
์ ๋ช
์ํ๊ธฐ ์ํด ํ์์ PropTypes๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
import PropTypes from 'prop-types';
const Button = ({ label, onClick }) => {
return <button onClick={onClick}>{label}</button>;
};
Button.propTypes = {
label: PropTypes.string.isRequired, // ๋ฌธ์์ด์ด์ด์ผ ํ๊ณ ํ์
onClick: PropTypes.func, // ํจ์
};
export default Button;
PropTypes๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ ํ๊ฒฝ(dev)์์ ํ์
๊ฒ์ฆ์ ์ํํ๊ณ ,
์๋ชป๋ props๊ฐ ์ ๋ฌ๋ ๊ฒฝ์ฐ ์ฝ์์ ๊ฒฝ๊ณ ๋ฅผ ์ถ๋ ฅํด์ฃผ๊ธฐ ๋๋ฌธ์
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ผ์ ์์ค์ ํ์ ์์ ์ฑ์ ์ฑ๊ธธ ์ ์๋ ์ฅ์ ์ด ์๋ค.

๊ทธ๋ฌ๋ ์์๊ณผ๋ ๋ฌ๋ฆฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ ์คํธํด๋ณด๋,
์๋ชป๋ props๋ฅผ ์ ๋ฌํด๋ ์ฝ์์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์๋ค.
2๏ธโฃ ์์ธ ๋ถ์
์ฒ์์๋ PropTypes ์ค์ ์ด ์๋ชป๋์๋ ์ถ์ด ํจํค์ง๋ฅผ ์ฌ์ค์นํด๋ณด๊ณ ,
ESLint ์ค์ ์ ์์ ํด๋ณด๋ ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์๋ํ์๋ค.

์ด๋ ๊ฒ ํด๋ ์๋๊ณ , ์ ๋ ๊ฒ ํด๋ ์๋๊ธธ๋ ์ค๋ง..?ํ๋ฉด์ ๋ฆฌ์กํธ ๊ณต์๋ฌธ์๋ฅผ ์ฐพ์๋ดค๋ค.
๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์๋ฅผ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ,
React 19๋ถํฐ๋ PropTypes๊ฐ ๋ ์ด์ ์ง์๋์ง ์๋๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. (๊ฑฐ์ง๋ง์ด๋ผ ํด์ค...)

์ด๋ฅผ ํ์ธํ๊ธฐ ์ํด React 18 ํ๊ฒฝ์ ๋ณ๋๋ก ๊ตฌ์ฑํด์ ํ ์คํธ ํด๋ณด๋
์ด์ ๋ฒ์ ์์๋ ์ ์์ ์ผ๋ก ์ฝ์ ๊ฒฝ๊ณ ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.......๐คฆโ๏ธ
3๏ธโฃ ํด๊ฒฐ ๋ฐฉ๋ฒ
React 19์์๋ PropTypes๋ฅผ ๋ ์ด์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์
์ฐจ์ ์ฑ ์ผ๋ก JSDoc ์ฃผ์์ ์ฌ์ฉํ props ํ์ ์ ์ ๋ฐฉ์์ ์ ํํ์๋ค.
/**
* @param {Object} props
* @param {string} props.label - ๋ฒํผ์ ํ์ํ ํ
์คํธ
* @param {() => void} [props.onClick] - ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ
*/
const Button = ({ label, onClick }) => {
return <button onClick={onClick}>{label}</button>;
};
JSDoc์ ์์ฑํ๋ฉด VScode์์ ์๋์์ฑ ๊ธฐ๋ฅ์ ์ง์๋ฐ์ ์ ์์ด์ ํธ๋ฆฌํ๊ณ ,
ํ์์ด ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ์ดํดํ๋๋ฐ์๋ ๋์๋์๋ค.
๋ค๋ง JSDoc์ ์ ์ ํ์ ๊ฒ์ฌ๋ฅผ ํด์ฃผ์ง ์์์
PropTypes์ฒ๋ผ ๋ฐํ์ ์๋ฌ๋ฅผ ์ก์์ฃผ์ง๋ ์๋๋ค.
๋ฐ๋ผ์ ํ์ ์์ ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด
๋ค์ ํ๋ก์ ํธ์์๋ TypeScript๋ฅผ ๋์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
4๏ธโฃ ์ ๋ฆฌ
- React 19๋ถํฐ๋
prop-types๊ฐ ์๋์ผ๋ก ๋ฌด์๋์ด ์๋ํ์ง ์๋๋ค.- PropTypes๋ฅผ ์ ์ ์ฉํ๋๋ฐ ์๋ฌด๋ฐ ๊ฒฝ๊ณ ๊ฐ ๋จ์ง ์๋๋ค๋ฉด ๋ฆฌ์กํธ ๋ฒ์ ์ ํ์ธํด๋ณด์
- ๊ณต์๋ฌธ์๋ฅผ ์์ฃผ ํ์ธํ์...๐ฅฒ
- Prop Types๋ฅผ ์ด์ฉํ ๋ฐํ์ ํ์ ๊ฒ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ React 18 ์ดํ ๋ฒ์ ์ ์ฌ์ฉํด์ผ ํ๋ค.
- React 19์์๋ JSDoc์ผ๋ก ๋์ฒดํ๊ฑฐ๋, ์ฅ๊ธฐ์ ์ผ๋ก TypeScript๋ฅผ ๋์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์์ ์ ์ด๋ค.