Add Exclude, Extract, NonNullable, ReturnType, and InstanceType types

This commit is contained in:
Anders Hejlsberg 2018-02-09 14:22:46 -08:00
parent 6dd88b39d5
commit 2aba29fc32

25
src/lib/es5.d.ts vendored
View File

@ -1338,6 +1338,31 @@ type Record<K extends string, T> = {
[P in K]: T;
};
/**
* Exclude from T those types that are assignable to U
*/
type Exclude<T, U> = T extends U ? never : T;
/**
* Extract from T those types that are assignable to U
*/
type Extract<T, U> = T extends U ? T : never;
/**
* Exclude null and undefined from T
*/
type NonNullable<T> = T extends null | undefined ? never : T;
/**
* Obtain the return type of a function type
*/
type ReturnType<T extends (...args: any[]) => any> = T extends (...args: any[]) => infer R ? R : any;
/**
* Obtain the return type of a constructor function type
*/
type InstanceType<T extends new (...args: any[]) => any> = T extends new (...args: any[]) => infer R ? R : any;
/**
* Marker for contextual 'this' type
*/