/* eslint-disable no-var */ declare var jQuery: any; declare var unsafeWindow: Window; declare var mozIndexedDB: IDBFactory | null; declare var webkitIndexedDB: IDBFactory | null; declare var msIndexedDB: IDBFactory | null; declare type IPromise = T | Promise; declare type IFunction = T | (() => T); declare type IArray = T | Array; /** * 提取数组中的元素类型 */ declare type ArrayElementType = T extends Array ? U : never; /** * 让对象的某个属性必选 */ declare type RequiredProperty = Omit & Required>; /** * 让对象的某个属性非空 */ declare type NonNullableProperty = Omit & { [P in K]-?: NonNullable; }; declare type DeepRequired = T extends any[] ? T : // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type T extends Function ? T : T extends object ? T extends Node ? T : { [K in keyof T]-?: DeepRequired; } : T;