跳到主要内容

EntityInstanceType<T>

type EntityInstanceType<T> = T extends (...args) => infer R ? R : never;

Defined in: packages/rxdb/src/entity/entity.interface.ts:129

实体实例类型

从 EntityType 里取出 new 出来的实例形状。

Type Parameters​

Type ParameterDescription
T extends EntityType实体类型(构造函数侧)

Remarks​

不要用内置的 InstanceType<T> 代替本类型。InstanceType 的约束是 abstract new (...args: any) => any,而 EntityType 的构造签名是有意写死的 new (...args: never[])——逆变位上 any 不可赋给 never,约束不满足, 于是条件类型落到 : any 兜底分支:InstanceType<EntityType> 恒等于 any。

any 不会报错,只会静默吞掉它之后的所有类型检查,所以这个塌陷从编译输出上完全看不出来; 唯一的迹象是 .d.ts 里冒出来的 any。本类型把 never[] 原样写进自己的条件分支, 因而能正确推断出 R。