javascript - 使用 Typescript 进行条件输入
问题描述
我有两个班级ClassA
,ClassB
如下:
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')
}
}
我有另一个函数需要一个实例ClassA
或ClassB
作为参数,如下所示。
function sayHello(object) {
// ...
}
如何输入object
以访问该函数functionA
或functionB
取决于正在使用的类的实例?下面的代码不起作用:
function sayHello(object: IClassA | IClassB)
我不想使用泛型any
类型。谢谢。
解决方案
functionA
您可以在尝试调用它之前检查对象。
示例(操场):
function sayHello(obj: IClassA | IClassB) {
if ('functionA' in obj) {
obj.functionA()
}
}
推荐阅读
- java - 为什么在 Java Map 中没有返回给定值的键的方法?
- python - 从python列表中删除括号
- javascript - 如何根据这个跨度的值选择这个输入?
- reactjs - 无法通过电子中的渲染器进程发送消息
- python - Django Admin 多重计数问题
- google-chrome - Chrome 拒绝缓存大型二进制 .data 文件
- arrays - 填充大小为 n 的数组的方法数,使得 mexium 大于数组的每个元素?
- python - 机器人框架和 Python:运行关键字并在没有完成的情况下继续
- openimageio - 如何解释某些电影格式中 FramesPerSecond 元数据的“合理”值?
- outlook - Outlook Addin 如何使自定义选项卡仅在新邮件撰写窗口中显示