/** * Constructor type. * @interface Constructor * @extends Function * @template T * @tstype new(...params: any[]): T; prototype: T; */ /** * Properties type. * @typedef Properties * @template T * @type {Object.} * @tstype { [P in keyof T]?: T[P] } */