-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Copied the examples directly, I get the following error:
node_modules/rest-ts-express/dist/index.d.ts:14:11 - error TS2430: Interface 'TypedRequest<T>' incorrectly extends interface 'Request<ParamsDictionary, any, any, ParsedQs>'.
Types of property 'query' are incompatible.
Type 'ExtractRuntimeType<T["query"]>' is not assignable to type 'ParsedQs'.
Type 'void | (T["query"] extends (infer T)[] ? T extends [infer A] ? [ExtractBaseType<A>] : T extends [infer A, infer B] ? [ExtractBaseType<A>, ExtractBaseType<B>] : T extends [...] ? [...] : T extends [...] ? [...] : T extends [...] ? [...] : T extends [...] ? [...] : T extends [...] ? [...] : T extends [...] ? [...] : E...' is not assignable to type 'ParsedQs'.
Type 'void' is not assignable to type 'ParsedQs'.
Type 'void | { [x: string]: any; }' is not assignable to type 'ParsedQs'.
Type 'void' is not assignable to type 'ParsedQs'.
14 interface TypedRequest<T extends EndpointDefinition> extends express.Request {
~~~~~~~~~~~~
Found 1 error.
Stepping down some levels, the definition of:
export declare type ExtractRuntimeType<T> = T extends undefined ? void : T extends Array<infer T> ? T extends [infer A] ? [ExtractBaseType<A>] : T extends [infer A, infer B] ? [ExtractBaseType<A>, ExtractBaseType<B>] : T extends [infer A, infer B, infer C] ? [ExtractBaseType<A>, ExtractBaseType<B>, ExtractBaseType<C>] : T extends [infer A, infer B, infer C, infer D] ? [ExtractBaseType<A>, ExtractBaseType<B>, ExtractBaseType<C>, ExtractBaseType<D>] : T extends [infer A, infer B, infer C, infer D, infer E] ? [ExtractBaseType<A>, ExtractBaseType<B>, ExtractBaseType<C>, ExtractBaseType<D>, ExtractBaseType<E>] : T extends [infer A, infer B, infer C, infer D, infer E, infer F] ? [ExtractBaseType<A>, ExtractBaseType<B>, ExtractBaseType<C>, ExtractBaseType<D>, ExtractBaseType<E>, ExtractBaseType<F>] : T extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G] ? [ExtractBaseType<A>, ExtractBaseType<B>, ExtractBaseType<C>, ExtractBaseType<D>, ExtractBaseType<E>, ExtractBaseType<F>, ExtractBaseType<G>] : T extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G, infer H] ? [ExtractBaseType<A>, ExtractBaseType<B>, ExtractBaseType<C>, ExtractBaseType<D>, ExtractBaseType<E>, ExtractBaseType<F>, ExtractBaseType<G>, ExtractBaseType<H>] : Array<ExtractBaseType<T>> : ExtractBaseType<T>;
declare type ExtractBaseType<T> = T extends rt.Runtype ? rt.Static<T> : T extends {
new (...args: any[]): infer T;
} ? T : T extends any[] | Function ? T : T extends {
[k: string]: any;
} ? {
[K in keyof T]: ExtractRuntimeType<T[K]>;
} : T;
Changing the following:
export declare type ExtractRuntimeType<T> = T extends undefined ? void :
export declare type ExtractRuntimeType<T> = T extends undefined ? never :
fixes the issue for me.
Given I am new to the library and unable to assess risk and potential breaking effect of the change, I feel a bit uncomfortable making a PR at this time.
Metadata
Metadata
Assignees
Labels
No labels