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
声明的类型则无法再次扩展. 这也是interface
和type
的一个主要区别.