【发布时间】:2020-09-03 08:43:14
【问题描述】:
我有一个接口和两个扩展它的接口:
interface Layer {
name: string;
pretty_name: string;
}
interface SubLayer extends Layer{
url: string;
}
interface AnotherLayer extends Layer{
file: string;
}
然后我有一个服务,我有处理任何Layer参数的函数,然后需要区分子接口并调用正确的函数:
class LayerDataService {
static getLayer(layer: Layer) {
if (......) {
return LayerDataService.getSubLayer(layer as SubLayer );
}
else if (......) {
return LayerDataService.getAnotherLayer(layer as AnotherLayer);
}
}
static getAnotherLayer (layer: AnotherLayer) {
}
static getSubLayer(layer: SubLayer) {
}
}
所以在.....我想区分实现SubLayer的层和实现AnotherLayer的层。
所以我知道我不能使用 instanceof,因为它们不是类,它们是实现接口的对象。但是有没有一种方法不需要像我在类型保护中那样手动检查每个属性?
【问题讨论】:
标签: typescript inheritance interface