我有以下界面
interface IDownloader {
download()
}
和实现它的几个类:
class DownloaderA implements IDownloader {
...
}
class DownloaderB implements IDownloader {
...
}
然后,我有一个应该接收Downloader类的构造函数作为参数的类。当我指定这样的特定下载器时,我可以做到:
class DownloadWorker {
constructor(downloader: typeof DownloaderA) {
}
}
但是我不能以相同的方式键入接口:
class DownloadWorker {
constructor(downloader: typeof IDownloader) {
}
}
如何键入提示downloader参数,以便可以传递DownloaderA和DownloaderB构造函数?
答案 0 :(得分:0)
您可以使用构造函数签名:
class DownloadWorker {
constructor(downloader: new () => IDownloader) {
}
}
签名类似于函数签名,但是new
使其可以由new
运算符调用以创建新对象。
以上代码接受不带参数的构造函数(即类)。您可以添加特定的参数,或将其定义为new (...a:any[]) => IDownloader
,以允许带有任何参数的构造函数。