angular5 / typescript中定义全局成员

我最近一个项目的前端是用Anuglar5,在项目中需要用到全局变量全局方法。我平常的处理方法如下:

 

方法一:定义并导出常量/ 方法,然后是什么地方要使用就,什么地方再导入。如下图:

定义时:

export const floatUp = "dialogWapper";    // ============声明导出常量
export const calendarYearRange="2000:2030";
export const profileDefault = "../../assets/imgs/logo_1.png";
export function  provideParent(component: any){    //=========== 声明导出方法
        return { provide: Parent, useExisting: forwardRef(() => component) };
    };

使用时:

angular5 / typescript中定义全局成员_第1张图片

 

 

方法二:定义一个Service来声明一些全局的变量及方法,并在根模块(app.module)中provider中提供代理;然后什么地方使用就什么地方注入即可。如下图:

angular5 / typescript中定义全局成员_第2张图片

angular5 / typescript中定义全局成员_第3张图片

angular5 / typescript中定义全局成员_第4张图片

后来,同事问我 "有没什么方法,能不“export/import”的,可以在声明后后,直接使用的",我的回答是 "我也不太清楚"。

 

但今天我发现一段代码可以解决这个问题。

declare global {
  interface Window {
    _scriptLoadState: { [url: string]: LOADING_STATE }
    _loadingCallbacks: { [url: string]: Array<() => void> }
    BMap: BMap
    BMapLib: BMapLib
    baidumapinit: () => void
    BMAP_PERSPECTIVE_MAP: any
  }
}

这段代码的意思是,将Window接口中的这些成员直接挂载到 全局对象window上,这样的话,就可以使用 new window.Bmap() , new window.BMapLib()来声明对象实例了。

使用 window.baidumapinit() 命令来调用这个方法了。

今天时间有限,就先这些了,后期再查查资料进行跟进啊!

 

 

 

 

 

 

 

你可能感兴趣的:(Angular,typescript,前端,angular2/5,全局变量,angular5,typescript,global)