gpt4 book ai didi

typescript - 在 Typescript 中递归泛型?

转载 作者:行者123 更新时间:2023-12-04 11:39:07 24 4
gpt4 key购买 nike

Typescript 使用以下代码引发错误:

type AndType<AstT> = { type: 'And', args: [AstT] };
type TrueType = { type: 'True' };
type BaseAST = AndType<BaseAST> | TrueType;
投诉 Type alias 'BaseAST' circularly references itself. ;但是,如果我将循环引用包装在一个对象中,则这些类型可以正常编译:
type AndType<AstT> = { type: 'And', args: [AstT] };
type TrueType = { type: 'True' };
type BaseAST = {value: AndType<BaseAST>} | {value: TrueType};
为什么?有没有人引用定义此行为的文档?

最佳答案

在您的情况下,最简单的解决方案是制作 AndType键入一个接口(interface)如下:

interface AndType<AstT> {
type: 'And';
args: [AstT];
}
type TrueType = { type: 'True' };
type BaseAST = AndType<BaseAST> | TrueType;
一般来说,建议对简单类型使用接口(interface),但这并不总是可行的。已经给出的链接应该为您提供更深入的信息。

关于typescript - 在 Typescript 中递归泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68655337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com