跳到主要内容

声明文件

引言

有时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')

已有模块扩展属性