从没有“文档”的猫鼬模式中提取TS接口?

时间:2019-06-21 14:22:13

标签: typescript mongoose typescript-typings

我正在使用ts-mongoose,所以我可以在1个地方为我的数据定义接口+模式。然后,我将它们导出为猫鼬模式+实际接口。

我遇到的问题是找到一种简单的第一步方法来提取没有所有“文档”方法和属性的接口。

我从github问题中将这两个编译在一起:

type ExtractDoc<T> = T extends Model<infer U> ? U : never;
type ExtractI<T> = Pick<T, Exclude<keyof T, keyof Document>>;

并且我一直在尝试编写可重用的东西以结合两者:

export type ExtractInterface<T> = ExtractI<ExtractDoc<T>>;

但是当我尝试将其用于架构时:

export type IExternalUser = ExtractInterface<ExternalUser>;

抛出:refers to a value, but is being used as a type here.

但是,如果我通过额外的2个步骤来执行此操作,它将可以正常工作,并且一切都会变甜。

是否有一种方法,只需调用一次可重用类型即可提取干净接口?

1 个答案:

答案 0 :(得分:1)

您需要在#nonNullMethod之前放置一个@Nullable

@Autowired public void setServiceB(ServiceB service){ this.serviceB = service; }