javascript - 接受字符串并返回字符串或接受 void 并返回 void 的函数的类型是什么?

标签 javascript flowtype

我有以下功能;

const capitalize = (input) =>
    (!(typeof input === 'undefined'))
        ? input
            .split(' ')
            .map(capitalizeWord)
            .join(' ')
        : undefined

这要么接受一个字符串并返回一个字符串,要么接受一个 undefined 并返回 undefined,但绝不会接受一个字符串并返回 undefined 或接受 undefined 并返回一个字符串。我的想法是类型应该类似于 (void => void) & (string => string) 但这根本不是我想要的; Flow 担心我没有指定要大写输入是字符串还是未定义,而我希望它做的是有效地分派(dispatch)到正确的类型。当我让流只推断类型时,它推断出 (void | string) => (string | void),这太宽泛了。正确的签名是什么?

最佳答案

你可以定义generic作为 stringvoid:

const capitalize = <T: string | void>(input: T): T =>
        (!(typeof input === 'undefined')) ? input
            .split(' ')
            .join(' ')
        : input

但是,它应该返回传递的 arg,而不是 undefinedTry .

关于javascript - 接受字符串并返回字符串或接受 void 并返回 void 的函数的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53541043/

相关文章:

javascript - 最初搜索视频后无法快退或前进?

Javascript:什么是 $result.rows.item(x) 变量类型?

javascript - intro.js 是如何工作的?

javascript - 我怎样才能流式链接函数?

javascript - 如何在带有 js 流的对象字面量中指定 this

javascript - 在javascript中动态重新格式化输入以在数字中添加逗号

javascript - 将文档附加到 iFrame

javascript - 这个 Flow JS "polymorphic type instead of intersection type"错误是什么意思?

javascript - yarn 运行 babel src/-- -d lib/babel -- src/-d lib/-d 不存在。库/不存在

javascript - Babel 不剥离流注解