Typescript 如何在接口定义中实现类型?

Typescript 如何在接口定义中实现类型?,typescript,Typescript,我有一个可选属性的嵌套对象。我找到了一种通过这个来声明这个类型的方法。现在,我正试图找出如何将这种类型应用于我的对象接口,而不必修改使用接口的每个对象。一些例子使这一点更清楚 这是一个可复制的最小值 以下是递归对象类型: export type PartialRecursive<T> = T extends object ? { [K in keyof T]?: PartialRecursive<T[K]>; } : T; 简单对象(注意:此处需要数组)

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

这是一个可复制的最小值

以下是递归对象类型:

export type PartialRecursive<T> = T extends object
? {
      [K in keyof T]?: PartialRecursive<T[K]>;
  }
: T;
简单对象(注意:此处需要数组):

要使用新界面,我可以执行以下操作:

import { Foo, PartialRecursive } from './types';
const foo: PartialRecursive<Foo>[] = [{...}];`
import{Foo,PartialRecursive}来自“./types”;
const-foo:PartialRecursive[]=[{…}]`
但是我更愿意将这个
PartialRecursive
类型应用于声明它的接口,但是我不确定如何做。我有很多对象,我更喜欢根据接口实现这个
类型
,而不是每个使用它的实现


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

我不确定您想要的结果是什么;您是否试图使
Foo
已经应用了
PartialRecursive
,例如?还是别的什么?例如,这很奇怪,因为
Foo
PartialRecursive
是同一类型
Foo
的属性已经是可选的。我认为如果你能提供一份尽可能清楚地说明问题的报告,那将非常有帮助,因为从目前的情况来看。。。我很困惑,抱歉不清楚。在我的示例中,Foo的属性不应该有可选标志。您的示例正是我想要的,但是当我尝试使用它时,TS仍然给我一个类型错误。对于“foo”数组中的其他对象,TS抱怨仍然缺少属性,似乎PartialRecursive的“可选”部分不适用。如果要避免执行
PartialRecursive[]
,您可以创建另一个类型
type foorRecursive=PartialRecursive[];常量foo:foorescursive=[{}]“当我尝试使用TS时,它仍然给我一个类型错误”。请包括一个代码,使这种情况发生,在原来的职位。。。最好附带一个指向演示它的web IDE的链接。否则,如果它只是发生在您自己的环境中,而您无法在外部复制它,那么您需要开始详细介绍您的环境以及它与web IDE的区别。。。当然,这会让其他人处于明显的劣势,因为只有你才能访问你的环境。明白了,所以我以你为例,将其更改为我在本地看到的内容,我希望这会有所帮助。
import { Foo } from './types';
const foo: Foo[] = [
    {
        bar: true   
    }
]
import { Foo, PartialRecursive } from './types';
const foo: PartialRecursive<Foo>[] = [{...}];`