[英]How to check if an object type's prototype is Object.prototype in Typescript?
給定一個任意類型,我想檢查該類型是否為 object,其原型為Object.prototype
。 換句話說,我想排除函數、集合、映射、自定義類等。我不能只列出所有可能的 object 類型,因為自定義類的數量是無限的。 這可能嗎?
我想這樣做以遞歸地將映射應用於 object。這就是我所擁有的:
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
>;
但是,對於原型不是Object.prototype
的對象,這不起作用。 例如MapDeep<() => void>
返回F<{}>
而不是F<() => void>
,因為它匹配Partial<Record<string, any>>
。 我如何判斷類型的原型是否為Object.prototype
?
這不可能。 typescript類型不包含object的原型鏈信息,它只指定了屬性的類型接口及其簽名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.