在添加无意义的赋值后,仅使用细化流程

时间:2017-10-09 19:59:05

标签: javascript flowtype

在函数f中,flow抱怨对象在x(y)处不可调用。但是,由于类型细化,x此时不能成为对象。

在功能g中,添加作业z = x可解决问题,但功能相同。

/* @flow */
'use strict';

function f(x: {} | (a: number) => number) {
    if (typeof x === 'object') {
        return x;
    }
    return (y: number) => x(y);
}

function g(x: {} | (a: number) => number) {
    if (typeof x === 'object') {
        return x;
    }
    var z = x;
    return (y: number) => z(y);
}

module.exports = {f, g};

发生了什么事?这里没有函数调用会使细化无效。

0 个答案:

没有答案