diff --git a/modules/es6-subset.d.ts b/modules/es6-subset.d.ts new file mode 100644 index 0000000000..caef53e496 --- /dev/null +++ b/modules/es6-subset.d.ts @@ -0,0 +1,65 @@ + +/** + * Subset of lib.es2015.core.d.ts typings. + * Angular should not require use of ES6 runtime but some API usages are already present. + * See https://github.com/angular/angular/issues/5242 + * TODO(alexeagle): remove methods below which may not be present in targeted browser + */ + +interface String { + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * position. Otherwise returns false. + */ + startsWith(searchString: string, position?: number): boolean; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * endPosition – length(this). Otherwise returns false. + */ + endsWith(searchString: string, endPosition?: number): boolean; +} + +interface Array { + /** + * Returns the value of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T; + /** + * Returns the this object after filling the section identified by start and end with value + * @param value value to fill array section with + * @param start index to start filling the array at. If start is negative, it is treated as + * length+start where length is the length of the array. + * @param end index to stop filling the array at. If end is negative, it is treated as + * length+end. + */ + fill(value: T, start?: number, end?: number): T[]; +} + +interface NumberConstructor { + /** + * Returns true if the value passed is an integer, false otherwise. + * @param number A numeric value. + */ + isInteger(number: number): boolean; +} + +// Workaround https://github.com/Microsoft/TypeScript/issues/9193 +interface PromiseConstructor { + all(values: (T|PromiseLike)[]): Promise; +} + +interface Function { + /** + * Returns the name of the function. Function names are read-only and can not be changed. + */ + readonly name: string; +} diff --git a/modules/types.d.ts b/modules/types.d.ts index 1084916097..7d0eb482b2 100644 --- a/modules/types.d.ts +++ b/modules/types.d.ts @@ -13,5 +13,5 @@ /// /// /// -/// +/// /// diff --git a/packages/es6-subset.d.ts b/packages/es6-subset.d.ts new file mode 100644 index 0000000000..2f16198223 --- /dev/null +++ b/packages/es6-subset.d.ts @@ -0,0 +1,65 @@ + +/** + * Subset of lib.es2015.core.d.ts typings. + * Angular should not require use of ES6 runtime but some API usages are already present. + * See https://github.com/angular/angular/issues/5242 + * TODO(alexeagle): remove methods below which may not be present in targeted browser + */ + +interface String { + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * position. Otherwise returns false. + */ + startsWith(searchString: string, position?: number): boolean; + + /** + * Returns true if the sequence of elements of searchString converted to a String is the + * same as the corresponding elements of this object (converted to a String) starting at + * endPosition – length(this). Otherwise returns false. + */ + endsWith(searchString: string, endPosition?: number): boolean; +} + +interface Array { + /** + * Returns the value of the first element in the array where predicate is true, and undefined + * otherwise. + * @param predicate find calls predicate once for each element of the array, in ascending + * order, until it finds one where predicate returns true. If such an element is found, find + * immediately returns that element value. Otherwise, find returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T|undefined; + /** + * Returns the this object after filling the section identified by start and end with value + * @param value value to fill array section with + * @param start index to start filling the array at. If start is negative, it is treated as + * length+start where length is the length of the array. + * @param end index to stop filling the array at. If end is negative, it is treated as + * length+end. + */ + fill(value: T, start?: number, end?: number): T[]; +} + +interface NumberConstructor { + /** + * Returns true if the value passed is an integer, false otherwise. + * @param number A numeric value. + */ + isInteger(number: number): boolean; +} + +// Workaround https://github.com/Microsoft/TypeScript/issues/9193 +interface PromiseConstructor { + all(values: (T|PromiseLike)[]): Promise; +} + +interface Function { + /** + * Returns the name of the function. Function names are read-only and can not be changed. + */ + readonly name: string; +} diff --git a/packages/types.d.ts b/packages/types.d.ts index 87f212e64e..16e7e07562 100644 --- a/packages/types.d.ts +++ b/packages/types.d.ts @@ -10,7 +10,7 @@ /// /// -/// +/// /// ///