编译时检查typescript接口是否有一个或多个属性

编译时检查typescript接口是否有一个或多个属性,typescript,conditional-types,Typescript,Conditional Types,我需要找到一种方法,在编译时检查typescript接口是否有一个或多个属性(属性名称未知) 例如,给出以下定义: export type Cat = {}; export type Dog = { barking: boolean }; 我需要一个HasAnyProperties,它将为我提供: type catHasProperties = HasAnyProperties<Cat>; // false (because Cat is {}) type dogHasPr

我需要找到一种方法,在编译时检查typescript接口是否有一个或多个属性(属性名称未知)

例如,给出以下定义:

export type Cat = {};
export type Dog = { barking: boolean };
我需要一个
HasAnyProperties
,它将为我提供:

type catHasProperties = HasAnyProperties<Cat>;   // false   (because Cat is {})
type dogHasProperties = HasAnyProperties<Dog>;   // true    (because Dog has one or more properties)
如果我知道这些房产的名字会容易得多,但我不知道


我猜如果这是可能的话,它看起来会像这样。

结果是,它很简单:

 export type HasAnyProperties<T> = {} extends T ? false : true;
导出类型HasAnyProperties={}T?假:真;

至少对我来说是这样。如果有类似需求的人发现了这个问题,请发表评论或添加新的答案。

结果很简单:

 export type HasAnyProperties<T> = {} extends T ? false : true;
导出类型HasAnyProperties={}T?假:真;
至少对我来说是这样。如果有类似需求的人发现此问题,请评论或添加新答案