gpt4 book ai didi

javascript - 如何检查对象类型的原型(prototype)是否是 Typescript 中的 Object.prototype?

转载 作者:行者123 更新时间:2023-12-04 11:56:32 27 4
gpt4 key购买 nike

给定一个任意类型,我想检查该类型是否是原型(prototype)为 Object.prototype 的对象.换句话说,我想排除函数、集合、映射、自定义类等。我不能只列出所有可能的对象类型,因为自定义类的数量是无限的。这可能吗?
我想这样做以递归地将映射应用于对象。这是我所拥有的:

type MapDeep<T> = F<
T extends Primitive ? T
: T extends Array<infer U> ? Array<MapDeep<U>>
: T extends ReadonlyArray<infer U> ? ReadonlyArray<MapDeep<U>>
: T extends Set<infer U> ? Set<MapDeep<U>>
: T extends Map<infer K, infer V> ? Map<K, MapDeep<V>>
: T extends Partial<Record<string, any>> ? { [K in keyof T]: MapDeep<T[K]> }
: T
>;
但是,对于原型(prototype)不是 Object.prototype 的对象,这不起作用。例如。 MapDeep<() => void>返回 F<{}>而不是 F<() => void> , 因为它匹配 Partial<Record<string, any>> .如何判断一个类型的原型(prototype)是否为 Object.prototype ?

最佳答案

这是不可能的。 typescript 类型不包含有关对象原型(prototype)链的信息,它仅指定属性的类型接口(interface)及其签名。

关于javascript - 如何检查对象类型的原型(prototype)是否是 Typescript 中的 Object.prototype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68878949/

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