Skip to content

Commit 869a3e3

Browse files
committed
Fix inheritance on ID/ResourceName types
I think this must've changed when we removed the static Props declarations. Previously comparing static types worked, probably because of the static Prop list. Now comparing instance types appears to work, which seems more correct anyway.
1 parent f887ce0 commit 869a3e3

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/core/resources/resource-name.types.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,21 @@ type ResourceNameFromStatic<
6565
IncludeSubclasses extends boolean = false,
6666
> = ResourceShape<any> extends TResourceStatic
6767
? string // short-circuit non-specific types
68-
: {
69-
[Name in keyof ResourceMap]: ResourceMap[Name] extends TResourceStatic // Only self or subclasses
70-
? IncludeSubclasses extends true
71-
? Name
72-
: TResourceStatic extends ResourceMap[Name] // Exclude subclasses
73-
? Name
68+
: InstanceType<TResourceStatic> extends infer TResource
69+
? {
70+
[Name in keyof ResourceMap]: InstanceType<
71+
ResourceMap[Name]
72+
> extends infer Other
73+
? Other extends TResource // Only self or subclasses
74+
? IncludeSubclasses extends true
75+
? Name
76+
: TResource extends Other // Exclude subclasses
77+
? Name
78+
: never
7479
: never
7580
: never;
76-
}[keyof ResourceMap];
81+
}[keyof ResourceMap]
82+
: never;
7783

7884
type ResourceNameFromDBName<Name extends AllResourceDBNames> =
7985
// eslint-disable-next-line @typescript-eslint/naming-convention

0 commit comments

Comments
 (0)