我正在使用 ts-mongoose
,因此我可以在一个地方为我的数据定义接口(interface)和模式。然后我将它们导出为 mongoose 模式 + 实际接口(interface)。
我遇到的问题是找到一种简单的 1 步方法来提取该接口(interface),而无需所有“文档”方法和属性。
我从 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>;
正在抛出:指的是一个值,但在这里被用作类型。
但如果我用额外的 2 个步骤来完成它,它就会起作用并且一切都很顺利。
有没有一种方法可以通过调用 1 次可重用类型来提取干净的接口(interface)?
最佳答案
你需要放一个<typeof>
在 <ExternalUser>
之前
export type IExternalUser = ExtractInterface<typeof ExternalUser>;
关于typescript - 在没有 'Document' 的情况下从 Mongoose 模式中提取 TS 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56705269/