【发布时间】:2018-11-03 09:34:54
【问题描述】:
在定义类和使用的每个对象的类型时,我真的很喜欢 Typescript 的严格性,但我最近遇到了一些我想成为DRYer 的东西:
我有一个使用和创建特定对象的类定义,比如ClientsDB:
class ClientsDB {
constructor(name: string) {
this.DB = new Database(name);
}
DB: Database;
replaySubject = new ReplaySubject<Client[]>(1);
up() {
fromPromise(this.DB.getDocs<Client>())
.subscribe((clients) => this.replaySubject.next(clients));
}
subscribe(callback: (value: Client[]) => void) {
return this.replaySubject.subscribe(callback);
}
}
问题是我想为 ProductsDB 使用相同类型的类,这与纯 JavaScript 中的定义完全相同,但会使用不同的类型:
class ProductsDB {
constructor(name: string) {
this.DB = new Database(name);
}
DB: Database;
replaySubject = new ReplaySubject<Product[]>(1);
up() {
fromPromise(this.DB.getDocs<Product>())
.subscribe((products) => this.replaySubject.next(products));
}
subscribe(callback: (value: Product[]) => void) {
return this.replaySubject.subscribe(callback);
}
}
我怎样才能只得到一个类定义,但对这些类型定义使用相同的严格性?
【问题讨论】:
-
正如所写,它们实际上并不等价。你的意思是二等座少了一行吗?
.pipe(map(...))只在第一个。 -
@Duncan 你说得对,我已经为这个例子简化了我的代码,只删除了一行,我会进行编辑!
标签: javascript typescript types