export type Constructible = { prototype: T; apply: (this: unknown, args: TArgs) => void; }; export type PropertyKeys = { [K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? never : K; }[keyof T];