/**
 * Constructor type.
 * @interface Constructor
 * @extends Function
 * @template T
 * @tstype new(...params: any[]): T; prototype: T;
 */

/**
 * Properties type.
 * @typedef Properties
 * @template T
 * @type {Object.<string,*>}
 * @tstype { [P in keyof T]?: T[P] }
 */
