Я не думаю, что вы можете сделать это с Flow. Самое близкое, что вы можете получить, вероятно, это:
function<T>(obj: T): ([key: $Keys<T>]: boolean)
Тип этой функции возвращает объект с тем же ключом, что и входной объект, но только с логическими значениями (например, вы можете указать другой тип). Извините, что разочаровываю, но в целом сложно набирать высокодинамичный код с помощью Flow.
Обратите внимание, что функция $Keys
недокументирована, поскольку она не является частью общедоступного API, поэтому ее поведение определяется исключительно ее реализацией (другими словами, она может измениться в любое время).
Если вас интересуют подробности системы типов Flow, ознакомьтесь с типами, которые поставляются с потоком в его собственном каталоге /lib
, например https://github.com/facebook/flow/blob/master/lib/core.js — вы увидите, что некоторые вещи, такие как Object.assign
, являются особенными. case, поэтому вы не сможете повторно реализовать такие вещи в своем собственном коде.
Также посетите http://sitr.us/2015/05/31/advanced-features-in-flow.html для других «долларовых функций», таких как $Shape
и $Diff
— он частично устарел, но может дать несколько полезных указаний.
person
Nikita
schedule
21.03.2016