// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. // Nil describes a null or undefined value; export type Nil = null | undefined; // Maybe describes a type that is `T`, or `Nil` export type Maybe = T | Nil; // Newable ensures that a given value is a constructor export type Newable = new (...args: A) => T; // Extends mimics Newable, but works for abstract classes as well export type Extends = Function & { prototype: T }; // eslint-disable-line @typescript-eslint/no-unsafe-function-type