鉴于以下内容:
ngIf
当您使用数字呼叫时,flow会抛出错误,但是当您使用数字
呼叫b时则不会// @flow
function a(s: string): ?string {
return s === '' ? null : s
}
function decorate(f: Function): Function {
return f
}
const b = decorate(a)
a(12)
b(12)
有没有这样的方法,你可以做像
这样的事情13: a(12)
^^ number. This type is incompatible with the expected param type of
3: function a(s: string): ?string {
^^^^^^ string
这样装饰函数可以正确地检查,而不会明确地限制装饰返回的内容,如
function decorate(f: Function): typeof(f) {
return f
}
或复制b上的类型信息,如
function decorate(f: Function): (string) => ?string {}
答案 0 :(得分:2)
你需要为此创建函数polymorphic:
function decorate<T: Function>(f: T): T {
return f
}
答案 1 :(得分:1)
您可以参数化您的功能:
function decorate(f: Function): Function {
return f;
}
可以
function decorate<T>(f: T): T {
return f;
}
说“结果的类型与输入的类型相同。