如何从类的字段创建接口



我有一个用于模型的类,该类具有类型化字段和静态generate方法,该方法基于传递的对象返回这些字段:

export class Message {
_id!: string
type!: 'foo' | 'bar'
static generate(properties): X {
return {
_id: properties.test.id,
type: properties.test._type_
}
}
}

我想要的是基于类中的字段类型以某种方式生成X(generate方法的结果(,如下所示(但不需要键入两次字段——类内和类型别名内(:

type X = {
_id: string
type: 'foo' | 'bar'
}

有没有办法告诉TypeScript根据类字段检查generate方法的结果?或者从X别名继承类字段类型?

如果将: Xgenerate定义中删除,Typescript将推断返回类型。这真的是你想要的吗?

默认情况下,它将生成一个记录类型,其中键(_id和type(映射到any。要解决这个问题,你可以这样做:

static generate(properties) {
return {
_id: properties.test.id as number,
type: properties.test._type_ as string
}
}

可能有一种更容易的方法来获取类型,但这就是我所做的,以避免重复。

别忘了,您可以使用ReturnType宏在其他地方使用此类型。

最新更新