precate 동작에 따라서 결과가 달랐다.
export type CreateBaseQueryResult<
TData = unknown,
TError = DefaultError,
TState = QueryObserverResult<TData, TError>,
> = BaseQueryNarrowing<TData, TError> &
MapToSignals<OmitKeyof<TState, keyof BaseQueryNarrowing, 'safely'>>
OmitKeyof
를 하게 되면 union 타입도 object 타입으로 변한다.
type precate 동작을 할때 의도한 대로 동작하지 않는다.
해결법
export interface BaseQueryNarrowing<TData = unknown, TError = DefaultError> {
isSuccess: (
this: CreateBaseQueryResult<TData, TError>,
) => this is CreateBaseQueryResult<
TData,
TError,
CreateStatusBasedQueryResult<'success', TData, TError>
>
CreateStatusBasedQueryResult<'success', TData, TError>
이 타입이랑