🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 全局 ### 声明全局函数 支持函数重载 ``` declare function jQuery(selector: string): any; declare function jQuery(domReadyCallback: () => any): any; ``` ## `declare namespace`声明 `Query.ajax` declare namespace 还是比较常用的,它用来表示全局变量是一个对象,包含很多子属性 ``` // src/jQuery.d.ts declare namespace jQuery { function ajax(url: string, settings?: any): void; } ``` 多个嵌套 ``` // src/jQuery.d.ts declare namespace jQuery { function ajax(url: string, settings?: any): void; namespace fn { function extend(object: any): void; } } ``` ### 声明 interface 和 type `type`与`interface`类似, ``` interface AjaxSettings { method?: 'GET' | 'POST' data?: any; } declare namespace jQuery { function ajax(url: string, settings?: AjaxSettings): void; } ``` ### 防止命名冲突 修改上一个示例 ``` // src/jQuery.d.ts declare namespace jQuery { interface AjaxSettings { method?: 'GET' | 'POST' data?: any; } function ajax(url: string, settings?: AjaxSettings): void; } ``` ### 声明合并 假如 jQuery 既是一个函数,可以直接被调用 jQuery('#foo'),又是一个对象,拥有子属性 jQuery.ajax() ``` // src/jQuery.d.ts declare function jQuery(selector: string): any; declare namespace jQuery { function ajax(url: string, settings?: any): void; } ```