说明: types 目录下记录类型说明,其中DefaultOptions为默认类型,Options为用户传入类型(继承自DefaultOptions,requestUrl必填),TrackConfig 为配置(version是否需要从package.json视业务场景)。Tacker类中initDefaults记录默认值,构造函数传入用户配置
types 目录下新增类型
/**
* @requestUrl: 接口地址
* @historyTracker history 上报
* @hashTracker hash上报
* @domTracker 携带Tracker-key点击事件上报
* @sdkVersion sdk版本
* @jsError js和promise报错异常上报
*/
export interface DefaultOptions {
uuid: string | undefined,
requestUrl: string | undefined,
historyTracker: boolean,
hashTracher: boolean,
domTracker: boolean,
sdkVersion: string | number,
extra: Record<string, any> | undefined,
jsError: boolean
}
export interface Options extends Partial<DefaultOptions> {
requestUrl: string,
}
export enum TrackerConfig {
version = '1.0.0'
}
code/index.ts
import { DefaultOptions, TrackerConfig, Options } from '../types/index';
export default class Tracker {
public data: Options;
constructor(options: Options) {
this.data = Object.assign(this.initDefaults(), options)
}
private initDefaults(): DefaultOptions {
return {
sdkVersion: TrackerConfig.version,
historyTracker: false,
hashTracher: false,
domTracker: false,
jsError: false
} as DefaultOptions
}
}