unselfish
Version:
A high-performance js toolkit
109 lines (108 loc) • 3.61 kB
TypeScript
declare namespace QueUtils {
type lazyType = {
lazyAttr: string;
loadType: string;
};
type intersectionOptionsType = {
root: Element;
rootMargin: string;
threshold: number;
};
type FileType = {
filetype: string;
mimetype: string | string[];
};
interface XHRParams {
/** 请求的基础路径 */
baseUrl: string;
/** 请求路径 */
url?: string;
/** 请求方法 */
method: "GET" | "POST" | "PUT" | "DELETE" | "OPTIONS" | "TRACH" | "HEAD" | "CONNECT";
/** 是否严格要求请求返回的状态码 */
strict?: boolean;
/**
* 传参对象
*
* ### `json`传参则为`object`
* ```js
* const data = { price: 999, shopName: "商品名称" }
* ```
*
* ### 上传图片时为`FormData`
* ```js
* const data = new FormData();
* data.append("img", file); // `img`是跟后台约定好的`key`字段
* ```
*
* ### 普通表单传参使用
* ```js
* const data = "name=hjs&id=123";
* ```
*/
data?: object | string | FormData;
/** 超时毫秒 */
overtime?: number;
/** `XMLHttpRequest.header`设置对象 */
headers?: {
[key: string]: string;
};
/**
* 接口数据响应类型
* - 默认`json`
*/
responseType: XMLHttpRequestResponseType;
/**响应的结果是否序列化*/
serialization?: boolean;
/** 成功回调 */
success(
/** 响应结果 */
res: any,
/** 响应原数据结果 */
response: XMLHttpRequest): void;
/** 失败回调 */
fail?(value: XMLHttpRequest): void;
/** 超时回调 */
timeout?(value: XMLHttpRequest): void;
/** 请求进度 */
progress?(event: ProgressEvent<XMLHttpRequestEventTarget>): void;
}
class initApp {
constructor();
protected Initialization(): string;
}
export class Que extends initApp {
constructor();
static debounce(): (fun: Function, param: any[], time: number, firstEffect?: boolean) => void;
static throttle(): (fun: Function, param: any[], time: number, firstEffect?: boolean) => void;
static lazyLoading(lazyParams: lazyType, intersectionOptions?: intersectionOptionsType): {
update: Function;
observer: IntersectionObserver;
};
static fetchRequest(method: string, url: string, data: object, headers?: HeadersInit, timeout?: number): Promise<unknown>;
/**计算(utf-8字符集)字符的字节数 */
static byteLength(_data: string): number;
/**
*
* @param {any} target
* @returns {string}
*/
static checkType(target: any): string;
/** 根据头部文件判断文件的类型以及 MIME Type */
static getFileMimeType(buffer: ArrayBuffer): FileType;
/**
*
* @param {XHRParams} parameter 传参对象
*/
static XHRRequest<T>(parameter: XHRParams): Promise<T>;
/**
*
* @param {any} obj 需要clone的对象
*
*/
static deepClone(target: any): any;
}
export {};
}
declare const _default: typeof QueUtils.Que;
export default _default;