Flowtype回调的范围不能从父范围获取类型

时间:2017-12-05 17:41:35

标签: javascript scope flowtype

问题:

  1. 我有一个接受回调并运行它的函数(跳过注释):

    const run = (cb) => cb();
    
  2. 我的功能需要一个数字:

    const addTen = (arg: number) => arg + 10;
    
  3. 我有一个函数 OPTIONALLY ACCEPTS 一个数字参数,但在调用run()内部,在回调内部调用addTen()传递其可选参数:

    const addInCallback = (value: ?number) => {
        // correctly complaints about addTen not accepting null/undefined
        run(() => addTen(value))
    }
    
  4. 使用:

    const addInCallback = (value: ?number) => {
        run(() => {
            if (value) {
                addTen(value)
            }
        })
    }
    
  5. 不能工作

    const addInCallback = (value: ?number) => {
        if (value) {
            run(() => addTen(value)) // here, value can't be null/undefined
                                     // yet it still complaints
        }
    }
    
  6. 不能工作

    const addInCallback = (value: ?number) => {
        if (!value) return;
        run(() => addTen(value)) // here, value can't be null/undefined
                                 // yet it still complaints
    }
    
  7. 问题:

    如果我不想在回调中进行检查,我该如何处理这个问题,以便回调可以理解上面的范围已经明确表明value不能null/undefined 1}}?

0 个答案:

没有答案