Skip to content

Commit 0fbb531

Browse files
committed
Fix EnhancedResource.name to have type string instead of never for non-specific resource shapes
1 parent 1dbd0ef commit 0fbb531

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/common/resource.dto.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -283,14 +283,17 @@ export const isResourceClass = <T>(
283283
): cls is ResourceShape<T> =>
284284
'Props' in cls && Array.isArray(cls.Props) && cls.Props.length > 0;
285285

286-
export type ResourceName<TResourceStatic extends ResourceShape<any>> = {
287-
[Name in keyof ResourceMap]: ResourceMap[Name] extends TResourceStatic // Only self or subclasses
288-
? TResourceStatic extends ResourceMap[Name] // Exclude subclasses
289-
? Name
290-
: never
291-
: never;
292-
}[keyof ResourceMap] &
293-
string;
286+
export type ResourceName<TResourceStatic extends ResourceShape<any>> =
287+
ResourceShape<any> extends TResourceStatic
288+
? string // short-circuit non-specific types
289+
: {
290+
[Name in keyof ResourceMap]: ResourceMap[Name] extends TResourceStatic // Only self or subclasses
291+
? TResourceStatic extends ResourceMap[Name] // Exclude subclasses
292+
? Name
293+
: never
294+
: never;
295+
}[keyof ResourceMap] &
296+
string;
294297

295298
export type MaybeUnsecuredInstance<TResourceStatic extends ResourceShape<any>> =
296299
MaybeSecured<InstanceType<TResourceStatic>>;

0 commit comments

Comments
 (0)