在Typescript中,我们可以有一个函数实现这样的接口:
interface ISample {
(argument: boolean): number
}
let v: ISample;
v = function (isTrue: boolean): number {
return 10;
}
但这仅适用于通过函数表达式创建的函数(即,通过变量初始化它们,在本例中它是v
)。当我尝试做类似于函数语句的事情时,它不起作用:
interface ISample {
(argument: boolean): number
}
function v: ISample (isTrue: boolean): number {
return 10;
} // Doesn't work, compiler says '"(" expected'
那么,有没有办法用函数语句或运气来做到这一点,我不得不抛弃接口函数或使用函数表达式代替?谢谢!
答案 0 :(得分:1)
接口在那里,因此您可以要求变量或参数或字段符合接口。您可以使用函数语句声明函数,然后将其分配到需要ISample
的任何位置。
interface ISample {
(argument: boolean): number
}
function v(isTrue: boolean): number {
return 10;
}
let weNeedSample: ISample = v;
您不能强制函数语句符合当前typescript语法中的接口。只要您尝试将函数分配给类型为ISample
的符号,就会出现错误。
使用函数表达式时也会发生这种情况。在这种情况下,会发生错误,因为您对ISample
类型的变量执行赋值,如果您只有函数表达式(例如使用IFFE),则无法指定必须符合接口。
答案 1 :(得分:0)
您可以像这样将函数委托转换为接口
interface ISample {
(argument: boolean): number
}
<ISample>function v(isTrue) { // isTrue is a boolean and return type is number
return 10;
}