gpt4 book ai didi

javascript - 覆盖 Object.entries() 的类型会导致意外错误

转载 作者:行者123 更新时间:2023-12-04 11:35:13 24 4
gpt4 key购买 nike

我覆盖了Object.entries像这样:

interface ObjectConstructor {
entries<T extends Record<string, any>>(o: T): {
[K in keyof T]: [K, T[K]];
}[keyof T][];
}
它通常工作正常。但是,在某些情况下,我得到:
Type '["alignContent", AlignContent | undefined] | ["alignItems", AlignItems | undefined] | ["alignSelf", AlignSelf | undefined] | ... 781 more ... | undefined' must have a '[Symbol.iterator]()' method that returns an iterator.
联合中的最后一个类型是 undefined ,使我无法像这样解构:
const style: Partial<React.CSSProperties> = {
height: '123px',
};
for (const [k, v] of Object.entries(style)) {
...
}
根据类型定义,它永远不应该返回 undefined .为什么返回 undefined ?我想省略 undefined 是安全的.

最佳答案

您的 style 属性示例不代表您的实际使用情况。提供的代码在 typescript 3.9 和 4.1(使用 React 16.x 和 17.x)中都可以正常工作。
要回答您的问题:

According to the type definition, it should never return undefined. Why is it returning undefined? I guess it's safe to just omit undefined.


所以是的,如果你不能解决你正在使用的数据困惑的话,这样做是安全的。
您的代码应该看起来像这样(尽管有不止一种方法可以实现)
interface ObjectConstructor {
entries<T extends Record<string, any>>(o: T): {
[K in keyof Omit<T, undefined>]: [K, T[K]];
}[keyof Omit<T, undefined>][];
}

关于javascript - 覆盖 Object.entries() 的类型会导致意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68001450/

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