【发布时间】:2021-05-11 00:29:00
【问题描述】:
我正在使用一个函数构建一个 API,该函数接受交错的类列表和初始值以分配给它们的实例。值必须可以分配给其前一个类的实例,并且可以省略。调用如下所示:
create(A, {x: 0, y: 0}, B, C, D, {w: 'foo'});
我尝试定义一个像这样的类型:
interface Type<C> {
new(): C;
}
type TypesWithInitializers<C> =
[] |
[Type<any>, ...TypesWithInitializers<any>] |
[Type<C>, Partial<C>, ...TypesWithInitializers<any>];
function create(...args: TypesWithInitializers) {...}
这会失败,并出现错误“类型别名 'ComponentTypesWithInitializers' 循环引用自身。ts(2456)”。我不知道如何解决这个问题。
我的理解是允许接口递归,但我不知道如何在接口中复制rest运算符,只知道如何声明特定元素或所有元素。我还看到了一些递归定义 JSON 结构的示例,这些示例看起来与我正在做的非常相似,但我无法弄清楚关键的区别是什么。
【问题讨论】:
标签: typescript