@boostpack/class
v2.0.0
Published
Utilities for working with classes in TypeScript.
Readme
@boostpack/class
Utilities for working with classes in TypeScript.
Installation
npm install @boostpack/classAPI
ClassConstructor<T>
Represents any class constructor (including abstract classes) that produces an instance of type T.
import { ClassConstructor } from '@boostpack/class';
function create<T>(ctor: ClassConstructor<T>, ...args: unknown[]): T {
return new (ctor as new (...a: unknown[]) => T)(...args);
}
class UserService {}
const instance = create(UserService); // UserServiceOptionalClassConstructor<T>
A class constructor that may be undefined. Useful for optional dependency injection or conditional class resolution.
import { OptionalClassConstructor } from '@boostpack/class';
function resolveOptional<T>(ctor: OptionalClassConstructor<T>): T | undefined {
return ctor ? new (ctor as new () => T)() : undefined;
}
const Logger: OptionalClassConstructor<Console> = undefined;
resolveOptional(Logger); // undefinedOptionalClassInstance<C>
Conditionally resolves to InstanceType<C> if C is a constructable class, otherwise undefined. Works at the type level for generic programming.
import { OptionalClassInstance } from '@boostpack/class';
class Config {}
type A = OptionalClassInstance<typeof Config>; // Config
type B = OptionalClassInstance<string>; // undefinedLicense
MIT
