返回函数的返回类型

时间:2017-01-02 10:54:06

标签: javascript angular typescript

我有以下函数返回另一个function,其中getFirstPhoneNo()将返回string

get phones() {
    if (this._patientData && this._patientData.getPatientPrimaryAddress) {
        return this._patientData.getFirstPhoneNo();
    }
    return false;
}

以下是interface

patientData
export interface IPatient {
    getFirstPhoneNo: Function
}

手机的归还类型应该是什么?它应该是IpatientFunction还是Function which returns string

的类型

1 个答案:

答案 0 :(得分:1)

IPatient定义为

export interface IPatient {
   getFirstPhoneNo: () => () => string
}

这意味着getFirstPhoneNo是一个返回一个返回字符串的函数的函数。 所以get phones返回一个布尔值或一个返回字符串的函数。这可以转换为boolean | () => string的返回类型。此返回类型不是很有用,因为它只具有boolean() => string两种类型共享的属性。

一种可能性就是改变你的代码:

get phones() {
  if (this._patientData && this._patientData.getPatientPrimaryAddress) {
    return this._patientData.getFirstPhoneNo();
  }
  return () => '';
}

这会将get phones的界面更改为() => () => string,但也允许您检查是否设置了电话号码(因为空字符串的计算结果为false)

另一种更简单的方法是在get phone功能中进行方法调用并仅返回电话号码

   get phones() {
      if (this._patientData && this._patientData.getPatientPrimaryAddress) {
        return this._patientData.getFirstPhoneNo()();
      }
      return null;
    }