Type 'false | Element' is not assignable to type 'ReactElement<any, string | JSXElementConstructor<any>> | ComponentType<any> | null | undefined'.


에러가 발생했던 코드는 아래와 같다.

export default function EventListScreen() {
    return (
        <FlatList
            // .....
            ListEmptyComponent={
                !eventList.length && (
                    <Text>생성된 이벤트가 없습니다.</Text>
                )
            }
            // ....
        />
    )
}

이 구문은 &&를 사용하는 inline logical 구문이다. React 공식 문서에서도 찾아볼 수 있다. 코드에 빨간 줄이 뜨긴 하지만 실행은 정상적으로 된다. React는 false를 만난 순간 그 뒤에 나온 코드를 무시하기 때문에 원하는대로 동작하게 할 수 있으나 Typescript 관점에서는 boolean && expression 이기 때문에 TS 오류가 발생한다. 가장 쉽게 해결할 수 있는 방법은 conditional logic 전체를 React element로 감싸는 방법이다.

export default function EventListScreen() {
    return (
        <FlatList
            // .....
            ListEmptyComponent={
                <>
                    {!eventList.length && (
                        <Text>생성된 이벤트가 없습니다.</Text>
                    )}
                </>
            }
            // ....
        />
    )
}

참고