我正在使用Beaker Browser为Angular6构建网站。
Beaker Browser有一个名为DatArchive
的内置类。我想为它创建一个类型声明文件。
当这个类只在一个文件中使用时,我只写了
declare class DatArchive {
static selectArchive(opts: any): Promise<DatArchive>;
static create(opts: any): Promise<DatArchive>;
constructor(datUrl: String);
url: string;
}
在文件中,一切都像魅力一样。但是,当我想将其提取到自己的文件中时,我尝试了:
export declare class DatArchive {
static selectArchive(opts: any): Promise<DatArchive>;
static create(opts: any): Promise<DatArchive>;
constructor(datUrl: String);
url: string;
}
...
// in other files
import { DatArchive } from 'dat-archive';
虽然它通过了编译,但在运行时,似乎它在模块中寻找DatArchive
,但DatArchive
是顶级(在window
对象上)类
所以,问题是:
在Angular / Typescript中,如何为不属于模块的类编写类型声明文件?
答案 0 :(得分:2)
您可以在声明文件中将其写入(称为beaker-browser.d.ts
):
declare class DatArchive {
static selectArchive(opts: any): Promise<DatArchive>;
static create(opts: any): Promise<DatArchive>;
constructor(datUrl: String);
url: string;
}
将它放入一个声明文件使它成为一个全局声明,所以你可以只使用let dataArchive = new DataArchive(url);
而不导入任何东西。
这是因为您不需要导入任何内容,因为代码本身已经在环境中。创建一个声明文件,您只需告诉编译器这样的类存在,而不提供定义(类似于您最初所做的,但可用于整个项目)。