首页 > 解决方案 > 使用 Typescript 进行条件输入

问题描述

我有两个班级ClassAClassB如下:

interface IClassA {
   functionA: ()=> void
}

class ClassA implements IClassA{
  functionA(){
    console.log('hello world A')
  }
}


interface IClassB {
   functionB: ()=> void
} 

class ClassB implements IClassB{
  functionB() {
    console.log('hello world B')
  }
}

我有另一个函数需要一个实例ClassAClassB作为参数,如下所示。

function sayHello(object) {
   // ...
}

如何输入object以访问该函数functionAfunctionB取决于正在使用的类的实例?下面的代码不起作用:

function sayHello(object: IClassA | IClassB) 

我不想使用泛型any类型。谢谢。

在此处输入图像描述

标签: javascripttypescript3.0

解决方案


functionA您可以在尝试调用它之前检查对象。

示例(操场):

function sayHello(obj: IClassA | IClassB) {
  if ('functionA' in obj) {
    obj.functionA()
  }
}

推荐阅读