type NonEmptyArray = [T, ...T[]]; type UnknownArgs = unknown[]; type UnknownClass = Class; /** * TS2545: A mixin class must have a constructor with a single rest parameter of type 'any[]'. * * biome-ignore lint/suspicious/noExplicitAny: TS2545 */ type MixinConstructorArgs = any[]; /** * Matches the definiction of `class` * * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes} */ interface Class { prototype: Pick; new (...args: A): T; } /** * Matches the definition of `Function` * * {@link https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions} */ type Fun = (this: T, ...args: A) => R; export type { Class as C, Fun as F, MixinConstructorArgs as M, NonEmptyArray as N, UnknownArgs as U, UnknownClass as a };