use*_*266 5 generics inheritance abstract-class typescript
我正在使用打字稿创建数据模型范例。我将不同类型的数据存储在不同的地方(SQL、本地缓存)。我想创建一个抽象类,其中包含任何类型的数据存储所需的所有方法(创建、查找、更新、计数、销毁)。这样我就可以扩展该类并针对不同类型的存储以不同的方式实现它,并且如果我缺少某个方法,编译器会警告我。然后,我将在描述数据模型的类中扩展这些实现之一。但是,我需要的一些方法(例如查找和创建)是静态的。我知道打字稿不支持抽象静态方法。是否有类似于我可以使用的抽象方法的东西,以便编译器警告我缺少方法?
我还希望这些静态方法是通用的,并且类型与类相同。我知道这对于标准泛型类来说没有意义。但是,由于此类始终会被扩展并且永远不会实例化,因此我可以在扩展它时键入泛型类,从而自动更新静态方法上的泛型类型吗?
是否有类似于我可以使用的抽象方法的东西,以便编译器警告我缺少方法
不是内置的,所以你不会简单地得到好的错误
// WILL NOT COMPILE. SAMPLE
class Foo {
abstract static X() { }
}
class Bar extends Foo { // Error here please
}
Run Code Online (Sandbox Code Playgroud)
但是,您可以使用类型兼容性等技巧来确保:
interface FooAbstract {
X(): any;
}
let _ensureAbstractMatch: FooAbstract;
class Foo {
}
class Bar extends Foo {
}
_ensureAbstractMatch = Bar; // Error missing method
Run Code Online (Sandbox Code Playgroud)
示例实现:
interface FooAbstract {
X(): any;
}
let _ensureAbstractMatch: FooAbstract;
class Foo {
}
class Bar extends Foo {
static X() { }
}
_ensureAbstractMatch = Bar; // OKAY
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3902 次 |
最近记录: |