mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-10-03 14:27:04 +00:00
Merge pull request #16054 from c7hm4r/master
ES6-Shim: `Map.get()`, `Array.find()` and others may return `undefined`
This commit is contained in:
@@ -1,31 +1,37 @@
|
||||
|
||||
declare const require: (module: string) => Object;
|
||||
if (require !== null) {
|
||||
require('es6-shim');
|
||||
}
|
||||
|
||||
interface Point { x: number; y: number; }
|
||||
interface Point3D extends Point { z: number; }
|
||||
|
||||
let a: any;
|
||||
let s: string;
|
||||
let i: number;
|
||||
let s: string = '';
|
||||
let i: number = 2;
|
||||
let iOrUndef: number | undefined;
|
||||
let b: boolean;
|
||||
let f: () => void;
|
||||
let f: () => void = () => {};
|
||||
let o: Object;
|
||||
let r: RegExp;
|
||||
let sym: symbol;
|
||||
let e: Error;
|
||||
let r: RegExp = /a/;
|
||||
let sym: symbol = {} as symbol;
|
||||
let e: Error = new Error();
|
||||
let date: Date;
|
||||
let key: PropertyKey;
|
||||
let point: Point;
|
||||
let point3d: Point3D;
|
||||
let arrayOfPoint: Point[];
|
||||
let point: Point = { x: 1, y: 2 };
|
||||
let point3d: Point3D = { x: 1, y: 2, z: 3 };
|
||||
let point3dOrUndef: Point3D | undefined;
|
||||
let pointOrUndef: Point | undefined;
|
||||
let arrayOfPoint: Point[] = [];
|
||||
let arrayOfPoint3D: Point3D[];
|
||||
let arrayOfSymbol: symbol[];
|
||||
let arrayOfPropertyKey: PropertyKey[];
|
||||
let arrayOfAny: any[];
|
||||
let arrayOfStringAny: [string, any][];
|
||||
let arrayLikeOfAny: ArrayLike<any>;
|
||||
let iterableOfPoint: IterableShim<Point>;
|
||||
let iterableOfStringPoint: IterableShim<[string, Point]>;
|
||||
let iterableOfPointPoint3D: IterableShim<[Point, Point3D]>;
|
||||
let arrayLikeOfAny: ArrayLike<any> = [];
|
||||
let iterableOfPoint: IterableShim<Point> = [];
|
||||
let iterableOfStringPoint: IterableShim<[string, Point]> = [];
|
||||
let iterableOfPointPoint3D: IterableShim<[Point, Point3D]> = [];
|
||||
let iterableIteratorOfPoint: IterableIteratorShim<Point>;
|
||||
let iterableIteratorOfNumberPoint: IterableIteratorShim<[number, Point]>;
|
||||
let iterableIteratorOfNumber: IterableIteratorShim<number>;
|
||||
@@ -37,23 +43,23 @@ let iterableIteratorOfAny: IterableIteratorShim<any>;
|
||||
let iterableIteratorOfPropertyKey: IterableIteratorShim<PropertyKey>;
|
||||
let iterableIteratorOfPropertyKeyPoint: IterableIteratorShim<[PropertyKey, Point]>;
|
||||
let nodeList: NodeList;
|
||||
let pd: PropertyDescriptor;
|
||||
let pdm: PropertyDescriptorMap;
|
||||
let map: Map<string, Point>;
|
||||
let set: Set<Point>;
|
||||
let weakMap: WeakMap<Point, Point3D>;
|
||||
let weakSet: WeakSet<Point>;
|
||||
let promiseLikeOfPoint: PromiseLike<Point>;
|
||||
let promiseLikeOfPoint3D: PromiseLike<Point3D>;
|
||||
let promiseOfPoint: Promise<Point>;
|
||||
let promiseOfPoint3D: Promise<Point3D>;
|
||||
let pd: PropertyDescriptor = {};
|
||||
let pdm: PropertyDescriptorMap = {};
|
||||
let map: Map<string, Point> = new Map<string, Point>();
|
||||
let set: Set<Point> = new Set<Point>();
|
||||
let weakMap: WeakMap<Point, Point3D> = new WeakMap<Point, Point3D>();
|
||||
let weakSet: WeakSet<Point> = new WeakSet<Point>();
|
||||
let promiseLikeOfPoint: PromiseLike<Point> = Promise.resolve(point);
|
||||
let promiseLikeOfPoint3D: PromiseLike<Point3D> = Promise.resolve(point3d);
|
||||
let promiseOfPoint: Promise<Point> = Promise.resolve(point);
|
||||
let promiseOfPoint3D: Promise<Point3D> = Promise.resolve(point);
|
||||
let promiseOfArrayOfPoint: Promise<Point[]>;
|
||||
let promiseOfVoid: Promise<void>;
|
||||
|
||||
point = Object.assign(point, point);
|
||||
b = Object.is(point, point);
|
||||
Object.setPrototypeOf(point, point);
|
||||
point = arrayOfPoint.find(p => b);
|
||||
Object.setPrototypeOf(point, {});
|
||||
pointOrUndef = arrayOfPoint.find(p => b);
|
||||
i = arrayOfPoint.findIndex(p => b);
|
||||
arrayOfPoint = arrayOfPoint.fill(point, i, arrayOfPoint.length);
|
||||
arrayOfPoint = arrayOfPoint.copyWithin(i, i, i);
|
||||
@@ -69,7 +75,7 @@ b = s.includes(s, i);
|
||||
b = s.endsWith(s, i);
|
||||
s = s.repeat(i);
|
||||
b = s.startsWith(s, i);
|
||||
s = String.fromCodePoint(i, i);
|
||||
s = String.fromCodePoint(2 as number, 3 as number);
|
||||
s = String.raw`abc`;
|
||||
s = r.flags;
|
||||
i = Number.EPSILON;
|
||||
@@ -102,7 +108,7 @@ i = Math.cbrt(i);
|
||||
map.clear();
|
||||
map.delete(s);
|
||||
map.forEach((value: Point, key: string) => { });
|
||||
point = map.get(s);
|
||||
pointOrUndef = map.get(s);
|
||||
b = map.has(s);
|
||||
map = map.set(s, point);
|
||||
i = map.size;
|
||||
@@ -117,7 +123,7 @@ i = set.size;
|
||||
set = new Set<Point>();
|
||||
set = new Set(iterableOfPoint);
|
||||
weakMap.delete(point);
|
||||
point3d = weakMap.get(point);
|
||||
point3dOrUndef = weakMap.get(point);
|
||||
b = weakMap.has(point);
|
||||
weakMap = weakMap.set(point, point3d);
|
||||
weakMap = new WeakMap<Point, Point3D>();
|
||||
@@ -184,6 +190,8 @@ promiseOfPoint = new Promise<Point>((resolve, reject) => resolve(point));
|
||||
promiseOfPoint = new Promise<Point>((resolve, reject) => resolve(promiseOfPoint));
|
||||
promiseOfPoint = new Promise<Point>((resolve, reject) => resolve(promiseLikeOfPoint));
|
||||
promiseOfPoint = new Promise<Point>((resolve, reject) => reject(e));
|
||||
// To prevent UnhandledPromiseRejectionWarning
|
||||
promiseOfPoint.catch(() => {});
|
||||
promiseOfArrayOfPoint = Promise.all(arrayOfPoint);
|
||||
promiseOfArrayOfPoint = Promise.all(iterableOfPoint);
|
||||
promiseOfPoint = Promise.race(arrayOfPoint);
|
||||
@@ -193,7 +201,11 @@ promiseOfPoint = Promise.resolve(point3d);
|
||||
promiseOfPoint = Promise.resolve(promiseOfPoint);
|
||||
promiseOfPoint = Promise.resolve(promiseLikeOfPoint);
|
||||
promiseOfVoid = Promise.reject(e);
|
||||
// To prevent UnhandledPromiseRejectionWarning
|
||||
promiseOfVoid.catch(() => {});
|
||||
promiseOfPoint = Promise.reject<Point>(e);
|
||||
// To prevent UnhandledPromiseRejectionWarning
|
||||
promiseOfPoint.catch(() => {});
|
||||
a = Reflect.apply(f, a, arrayLikeOfAny);
|
||||
a = Reflect.construct(f, arrayLikeOfAny);
|
||||
b = Reflect.defineProperty(a, s, pd);
|
||||
@@ -203,9 +215,9 @@ b = Reflect.deleteProperty(a, s);
|
||||
b = Reflect.deleteProperty(a, i);
|
||||
b = Reflect.deleteProperty(a, sym);
|
||||
iterableIteratorOfAny = Reflect.enumerate(a);
|
||||
a = Reflect.get(a, s, a);
|
||||
a = Reflect.get(a, i, a);
|
||||
a = Reflect.get(a, sym, a);
|
||||
Reflect.get(a, s, a);
|
||||
Reflect.get(a, i, a);
|
||||
Reflect.get(a, sym, a);
|
||||
pd = Reflect.getOwnPropertyDescriptor(a, s);
|
||||
pd = Reflect.getOwnPropertyDescriptor(a, i);
|
||||
pd = Reflect.getOwnPropertyDescriptor(a, sym);
|
||||
@@ -219,4 +231,4 @@ b = Reflect.preventExtensions(a);
|
||||
b = Reflect.set(a, s, a, a);
|
||||
b = Reflect.set(a, i, a, a);
|
||||
b = Reflect.set(a, sym, a, a);
|
||||
b = Reflect.setPrototypeOf(a, a);
|
||||
b = Reflect.setPrototypeOf(a, a);
|
||||
|
||||
Vendored
+6
-7
@@ -185,11 +185,10 @@ interface Array<T> {
|
||||
* @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<T>) => boolean, thisArg?: any): T;
|
||||
find(predicate: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): T | undefined;
|
||||
|
||||
/**
|
||||
* Returns the index of the first element in the array where predicate is true, and undefined
|
||||
* otherwise.
|
||||
* Returns the index of the first element in the array where predicate is true, and -1 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.
|
||||
@@ -556,9 +555,9 @@ interface Map<K, V> {
|
||||
clear(): void;
|
||||
delete(key: K): boolean;
|
||||
forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;
|
||||
get(key: K): V;
|
||||
get(key: K): V | undefined;
|
||||
has(key: K): boolean;
|
||||
set(key: K, value?: V): Map<K, V>;
|
||||
set(key: K, value: V): Map<K, V>;
|
||||
size: number;
|
||||
entries(): IterableIteratorShim<[K, V]>;
|
||||
keys(): IterableIteratorShim<K>;
|
||||
@@ -596,9 +595,9 @@ declare var Set: SetConstructor;
|
||||
|
||||
interface WeakMap<K extends object, V> {
|
||||
delete(key: K): boolean;
|
||||
get(key: K): V;
|
||||
get(key: K): V | undefined;
|
||||
has(key: K): boolean;
|
||||
set(key: K, value?: V): WeakMap<K, V>;
|
||||
set(key: K, value: V): WeakMap<K, V>;
|
||||
}
|
||||
|
||||
interface WeakMapConstructor {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": false,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
@@ -20,4 +20,4 @@
|
||||
"index.d.ts",
|
||||
"es6-shim-tests.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user