Solog
React에서 SOLID 원칙 ISP

React에서 SOLID 원칙 ISP

2023년 11월 24일

React
OOP

Interface Segregation Principle

객체는 자신이 호출하지 않는 메소드에 의존하지 않아야 한다.


type Data = { name: string age: number thumbnail: string address: string company: string }

위와 같은 데이터 응답 타입이 있고 이를 구현하고 사용하는 코드는 아래와 같다.

interface Props extends Data {} function Component({ name, thumbnail }: Props) { return ( <div> <img src={thumbnail} alt='' /> <p>{name}</p> </div> ) } export default Component
function Page() { const [data, setData] = useState<Data[]>([]) return ( <div> {data.map((item) => ( <Component key={item.name} {...item} /> ))} </div> ) } export default Page

ComponentPropsData 타입을 상속받았다.

하지만 실제로 사용하는 값은 name, thumbnail 이 두 값 밖에 없다.

이와 같은 설계는 불필요한 의존성이 생기기 때문에, Component 를 사용하는 다른 페이지에서 실제로는 사용되지도 않을 age, address, company 값을 선언해야하는 문제가 생긴다.

interface Props extends Pick<Data, 'name' | 'thumbnail'> {} function Component({ name, thumbnail }: Props) { return ( <div> <img src={thumbnail} alt='' /> <p>{name}</p> </div> ) } export default Component

위 처럼 사용할 name, thumbnail 값만 Props 로 받게 된다면 불필요한 의존성이 사라지고, 다른 페이지에서 Data 타입의 데이터를 모두 구현하지 않고도 Component 를 사용할 수 있게 된다.

이전 아티클

React에서 SOLID 원칙 LSP

다음 아티클

React에서 SOLID 원칙 DIP