声明文件
引言
有时SPA的页面代码挂载到window下一些变量或者方法,或者通过script
外部引入了一些工具库。在使用的时候会报错,因为该属性在ts下并没有定义导致校验没有通过。
所以需要使用declare
(声明)来告诉ts它是一个合法的变量,写在xxx.d.ts
的文件中,如global.d.ts、axios.d.ts
,建议放在项目根目录或者src
目录下
项目
declare var 声明全局变量
declare function 声明全局方法
declare class 声明全局类
declare enum 声明全局枚举类型
declare namespace 声明(含有子属性的)全局对象
interface 和 type 声明全局类型
export 导出变量
export namespace 导出(含有子属性的)对象
export default ES6 默认导出
export = commonjs 导出模块
export as namespace UMD 库声明全局变量
declare global 扩展全局变量
declare module 扩展模块
/// <reference /> 三斜线指令
全局变量
声明全局变量 USER_ID
,可以在任意位置直接读取: console.log(USER_ID)
,全局方法可以使用命名空间式的写法:
declare const USER_ID: string | undefined
declare const erba: any
declare namespace $location {
const push: (toPath: string) => void
const replace: (toPath: string) => void
}
declare interface Window {
USER_ID: typeof USER_ID
$location: typeof $location
erba: typeof erba
}
在业务代码中就可以使用了:
window.USER_ID = '123'
console.log(USER_ID)
$location.push('/home')