This commit is contained in:
@@ -2,34 +2,6 @@ import { Fn } from "hotscript"
|
|||||||
import { AbstractClass } from "type-fest"
|
import { AbstractClass } from "type-fest"
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents an array of instances corresponding to the provided classes.
|
|
||||||
* @template Classes - An array of classes extending AbstractClass.
|
|
||||||
*/
|
|
||||||
export type ClassesInstances<Classes extends readonly AbstractClass<any>[]> = (
|
|
||||||
Classes extends [infer Class, ...infer Rest]
|
|
||||||
? Class extends AbstractClass<any>
|
|
||||||
? Rest extends AbstractClass<any>[]
|
|
||||||
? [InstanceType<Class>, ...ClassesInstances<Rest>]
|
|
||||||
: never
|
|
||||||
: never
|
|
||||||
: []
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents an intersection of instances of the provided classes.
|
|
||||||
* @template Classes - An array of classes extending AbstractClass.
|
|
||||||
*/
|
|
||||||
export type ClassesInstancesIntersection<Classes extends readonly AbstractClass<any>[]> = (
|
|
||||||
Classes extends [infer Class, ...infer Rest]
|
|
||||||
? Class extends AbstractClass<any>
|
|
||||||
? Rest extends AbstractClass<any>[]
|
|
||||||
? InstanceType<Class> & ClassesInstancesIntersection<Rest>
|
|
||||||
: never
|
|
||||||
: never
|
|
||||||
: {}
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the static members of a class.
|
* Represents the static members of a class.
|
||||||
* @template Class - A class extending AbstractClass.
|
* @template Class - A class extending AbstractClass.
|
||||||
@@ -41,31 +13,3 @@ export type StaticMembers<Class extends AbstractClass<any>> = (
|
|||||||
export interface StaticMembersFn extends Fn {
|
export interface StaticMembersFn extends Fn {
|
||||||
return: StaticMembers<this["arg0"]>
|
return: StaticMembers<this["arg0"]>
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents an array of static members corresponding to the provided classes.
|
|
||||||
* @template Classes - An array of classes extending AbstractClass.
|
|
||||||
*/
|
|
||||||
export type ClassesStaticMembers<Classes extends readonly AbstractClass<any>[]> = (
|
|
||||||
Classes extends [infer Class, ...infer Rest]
|
|
||||||
? Class extends AbstractClass<any>
|
|
||||||
? Rest extends AbstractClass<any>[]
|
|
||||||
? [StaticMembers<Class>, ...ClassesStaticMembers<Rest>]
|
|
||||||
: never
|
|
||||||
: never
|
|
||||||
: []
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents an intersection of static members of the provided classes.
|
|
||||||
* @template Classes - An array of classes extending AbstractClass.
|
|
||||||
*/
|
|
||||||
export type ClassesStaticMembersIntersection<Classes extends readonly AbstractClass<any>[]> = (
|
|
||||||
Classes extends [infer Class, ...infer Rest]
|
|
||||||
? Class extends AbstractClass<any>
|
|
||||||
? Rest extends AbstractClass<any>[]
|
|
||||||
? StaticMembers<Class> & ClassesStaticMembersIntersection<Rest>
|
|
||||||
: never
|
|
||||||
: never
|
|
||||||
: {}
|
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user