gpt4 book ai didi

javascript - flowtype 似乎认为 Object.keys 输出始终是字符串数组,即使它知道得更好

转载 作者:行者123 更新时间:2023-11-28 18:22:36 26 4
gpt4 key购买 nike

示例代码:

/* @flow */

type Key = 'a' | 'b';

const obj: {[key: Key]: number} = {
a: 1,
b: 2,
};

const keys = Object.keys(obj);

const val = obj[keys[0]];

哪个produces this error message :

10: const keys = Object.keys(obj);
^ string. This type is incompatible with
5: const obj: {[key: Key]: number} = {
^ string enum

所以它认为 keysstring[] 而不是 Key[],这对我来说似乎是错误的。除了将 obj 的类型更改为 {[key: string]: number} 之外,还有什么方法可以解决这个问题吗?

最佳答案

Flow 引发错误,因为 Array<T>是不变的(参见 https://github.com/facebook/flow/issues/2487 )。这可以通过定义您自己的 keys 来修复功能

function keys<T: string>(obj: any): Array<T> {
return Object.keys(obj)
}

关于javascript - flowtype 似乎认为 Object.keys 输出始终是字符串数组,即使它知道得更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683076/

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