我有以下函数返回另一个function
,其中getFirstPhoneNo()
将返回string
。
get phones() {
if (this._patientData && this._patientData.getPatientPrimaryAddress) {
return this._patientData.getFirstPhoneNo();
}
return false;
}
以下是interface
patientData
export interface IPatient {
getFirstPhoneNo: Function
}
手机的归还类型应该是什么?它应该是Ipatient
或Function
还是Function which returns string
答案 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;
}