Skip to main content

TypeScript声明window全局变量

· One min read
Alan

TypeScript项目如果用到了一些第三方JS类库,但是没有提供d.ts文件时, 可以自己手动声明.

一般是在源码的src目录下, 创建global.d.ts文件, 以下示例声明jQuery的$以及一个Gitalk类库的类型:

src/global.d.ts
interface Window {
Gitalk: Gitalk
$: any
}

interface Gitalk {
new(options: {
clientID: string,
clientSecret: string,
repo: string,
owner: string,
admin: Array<string>,
id: string,
distractionFreeMode: boolean
}): GitalkInstance
}
interface GitalkInstance {
render(id: string): void
}

然后就可以使用 new window.Gitalk({ ... }) 创建实例了.

实际上任何interface声明的类型, 都可以自己手动扩展. 而type声明的类型则无法再次扩展. 这也是interfacetype的一个主要区别.