React

스타일드컴포넌트 as의 value를 props로 전달할 때 오류

sungtt 2022. 9. 8. 07:35

타입을 검사하는 타입스크립트에서 만난 오류다.

as속성을 string 타입으로 지정하여 전달하니 오류가 나더라.

 

스타일드컴포넌트의 as는 원하는 styled에 string을 전달하여 원하는 태그로 변경한다.

 

아래 코드는 button태그로 생성된 Styled를 div로 변경해준다.

const Styled = styled.button`
...
`
<Styled as='div'>
</Styled>

 

props로 전달 시에는?

interface As { 
as: string;
}
const Styled = styled.button`
...
`
<Styled as={props.div}>
</Styled>

해당 컴포넌트에 빨간줄이 생기고 설명을 보면 아래와 같다.

이 JSX 태그의 'children' 속성에는 여러 자식이 있어야 하는 'never' 형식이 필요하지만, 단일 자식만 제공되었습니다.

 

아래처럼 as가 가질수있는 타입의 경우를 모두 넣어주어 해결했다.

as: string | ComponentType<any> | undefined;