gpt4 book ai didi

typescript - 为什么 Typescript 代码是(或不是)循环依赖?

转载 作者:行者123 更新时间:2023-12-02 08:25:58 25 4
gpt4 key购买 nike

下面的代码让我很困惑,因为我认为这可能是循环依赖,但 Typescript 允许使用下面的代码。谁能解释一下这段代码实际上做了什么?

interface A extends Array<B> { };
type B = A;

最佳答案

TypeScript 允许递归定义,甚至允许 interface A extends Array<A> { };

我不知道这个特定定义在哪里有用,但这里是一个示例,说明了为什么在 TypeScript 中引入它。

原始来源:

https://github.com/microsoft/TypeScript/pull/33050

type ValueOrArray<T> = T | Array<ValueOrArray<T>>;

const a0: ValueOrArray<number> = 1;
const a1: ValueOrArray<number> = [1, [2, 3], [4, [5, [6, 7]]]];

type HypertextNode = string | [string, { [key: string]: any }, ...HypertextNode[]];

const hypertextNode: HypertextNode =
["div", { id: "parent" },
["div", { id: "first-child" }, "I'm the first child"],
["div", { id: "second-child" }, "I'm the second child"]
];

type Json = string | number | boolean | null | Json[] | { [key: string]: Json };

let data: Json = {
caption: "Test",
location: { x: 10, y: 20 },
values: [0, 10, 20]
}
JavaScript 允许对象呈现任何类型的对象,而 TypeScript 尝试允许对大多数使用情况进行类型检查。上面的例子是这种模式的完美案例,其中递归类型定义是有意义的。

由于类型仅保留在 TypeScript 编译上下文中,因此它们不是循环依赖,因为在运行时所有类型都会消失,剩下的都是纯 JavaScript。

关于typescript - 为什么 Typescript 代码是(或不是)循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946301/

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