gql-typeguards
Version:
GraphQL typeguards functions
23 lines (22 loc) • 1.66 kB
TypeScript
export declare type GraphQLResult = {
__typename: string;
};
export declare type ValueOfTypename<T extends GraphQLResult> = T['__typename'];
export declare function isType<Result extends GraphQLResult, Typename extends ValueOfTypename<Result>>(result: Result, typename: Typename): result is Extract<Result, {
__typename: Typename;
}>;
export declare function isEither<Result extends GraphQLResult, Typename extends ValueOfTypename<Result>, PossibleTypes extends Array<Typename>>(result: Result, typenames: PossibleTypes): result is Extract<Result, {
__typename: typeof typenames[number];
}>;
export declare function isNot<Result extends GraphQLResult, Typename extends ValueOfTypename<Result>, ExcludedTypes extends Array<Typename>>(result: Result, typenames: ExcludedTypes): result is Exclude<Result, {
__typename: typeof typenames[number];
}>;
export declare function isTypeInTuple<ResultItem extends GraphQLResult, Typename extends ValueOfTypename<ResultItem>>(typename: Typename): (o: ResultItem) => o is Extract<ResultItem, {
__typename: Typename;
}>;
export declare function isEitherTypesInTuple<ResultItem extends GraphQLResult, Typename extends ValueOfTypename<ResultItem>, PossibleTypes extends Array<Typename>>(typenames: PossibleTypes): (o: ResultItem) => o is Extract<ResultItem, {
__typename: typeof typenames[number];
}>;
export declare function isNotTypesInTuple<ResultItem extends GraphQLResult, Typename extends ValueOfTypename<ResultItem>, ExcludedTypes extends Array<Typename>>(typenames: ExcludedTypes): (o: ResultItem) => o is Exclude<ResultItem, {
__typename: typeof typenames[number];
}>;