副作用

全局变量

安全获取全局变量

判断是否在node环境

interface WebMonitorGlobal {
    __WebMonitor__: {
        hub?:any;
        logger?: any;
    };
} 


/**
 * Judge is it node environment
 * 
 * @returns {boolean}
 */
export const isNodeEnv = (): boolean => {
    return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';
}

const fallbackGlobalObject = {}

/**
 * Get global object safely
 * 
 * @returns {object}
 */
export const getGlobalObject = <T>(): T & WebMonitorGlobal => {
    return (isNodeEnv()
        ? global
        : typeof window !== 'undefined'
            ? window
            : typeof self !== 'undefined'
                ? self
                : fallbackGlobalObject) as T & WebMonitorGlobal;
}

参考自:web-monitor-sdk/env.ts at master · brizer/web-monitor-sdk