如何将类型实现到接口定义中?

时间:2021-05-31 15:49:34

标签: typescript

我有一个可选属性的嵌套对象。我找到了一种通过此 answer 声明此类型的方法。现在我试图弄清楚如何将这种类型应用于我的对象接口,而不必修改每个使用该接口的对象。一些例子可以更清楚地说明这一点。

这是一个最小的可重现 example

这里是递归对象类型:

export type PartialRecursive<T> = T extends object
? {
      [K in keyof T]?: PartialRecursive<T[K]>;
  }
: T;

示例界面:

export interface Foo {
    bar: boolean;
    bax: boolean;
}

简单对象(注意:这里需要数组):

import { Foo } from './types';
const foo: Foo[] = [
    {
        bar: true   
    }
]

要使用新界面,我可以这样做:

import { Foo, PartialRecursive } from './types';
const foo: PartialRecursive<Foo>[] = [{...}];`

但我更愿意将此 PartialRecursive 类型应用于声明它的接口,但我不知道该怎么做。我有很多对象,并且更愿意针对接口实现这个 type,而不是每个使用它的实现。

我希望这很清楚,检查了 TS 文档,但很难找到我要找的东西。

0 个答案:

没有答案