Skip to content

上传进度

TS

Event

ts
interface Event {
  readonly type: string;              // 事件类型,如 'click'、'progress'
  readonly target: EventTarget | null; // 事件触发的对象
  readonly currentTarget: EventTarget | null; // 当前正在处理的对象

  readonly bubbles: boolean;          // 是否冒泡
  readonly cancelable: boolean;       // 是否可被取消
  readonly composed: boolean;         // 是否可跨 Shadow DOM 传播

  readonly timeStamp: number;         // 事件触发的时间戳
  readonly isTrusted: boolean;        // 是否由浏览器生成(true)或脚本触发(false)

  // 方法:
  stopPropagation(): void;            // 阻止冒泡
  stopImmediatePropagation(): void;   // 阻止当前事件的进一步执行(包括同级监听器)
  preventDefault(): void;             // 阻止默认行为(前提:cancelable = true)

  // 事件初始化方法(旧标准)
  initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
}

ProgressEvent

ts
interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
  readonly lengthComputable: boolean;
  readonly loaded: number;
  readonly total: number;
  readonly target: T | null;
}
属性名类型说明
lengthComputableboolean是否能计算进度(即 total 是否有效)
loadednumber已经传输的字节数
totalnumber总字节数(若 lengthComputable 为 false,则可能为 0)
target`XMLHttpRequestEventTargetnull`

AxiosProgressEvent

ts
export interface AxiosProgressEvent {
  loaded: number
  total?: number
  progress?: number          // 自动计算的进度(0 ~ 1)
  bytes?: number             // 本次上传的字节数(部分浏览器支持)
  estimated?: number         // 预计剩余时间(仅 Node 支持)
  rate?: number              // 速率(bytes/s)
  upload?: boolean           // 是否为上传事件
  event?: ProgressEvent      // 原生事件对象
}