gpt4 book ai didi

javascript - 如何为用作排除函数的映射的对象声明流类型

转载 作者:行者123 更新时间:2023-11-30 21:16:20 25 4
gpt4 key购买 nike

函数与 {} 类型兼容:

/* @flow */
const a = { 'foo': {} }
const b = () => true;

(a: {[string]: {} }); // No errors! Cool, I like it
(b: {[string]: {} }); // No errors! Not cool, I don't want functions to pass validation

是否有可能以某种方式排除函数但允许字典?

Try Flow example

最佳答案

这是有效的,因为函数在技术上是有效的对象。但是,您可以通过一些 hack 来解决这个问题:设置一个可选属性 $call 并给它一个 empty 类型:

/* @flow */
const a = { 'foo': {} }
const b = () => true;

(a: { $call?: empty, [string]: {} }); // No errors! Cool, I like it
(b: { $call?: empty, [string]: {} }); // Errors, woohoo!

这要归功于 Flow 的内部函数定义。为了进行解释,我将展示如何通过给它一个 $call 属性来将一个对象分配给一个函数类型:

/* @flow */
const obj = { $call: () => { console.log('wat'); } };
(obj: Function) // No errors

关于javascript - 如何为用作排除函数的映射的对象声明流类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45653290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com