You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式判断TypeScript(AST)类型是否相等?

实现TypeNode与扁平化TypeLiteral的相等判断工具

我正在开发一个工具,用来判断TypeScript的TypeNode是否与给定的扁平化TypeLiteral相等,具体示例如下:

// type ABC = { a: number; b: number; c: number; };
const typeABC: ts.TypeAliasDeclaration = ...;
isEqual(typeABC, "{a: number; b: number; c: number; }") // 返回true

// Pick<ABC, "a" | "b">;
const typeAB: ts.TypeReferenceNode = ...;
isEqual(typeAB, "{ a: number; b: number; }") // 返回true

// type BC = { b: number; } & { c: number; };
const typeBC: ts.IntersectionTypeNode = ...;
isEqual(typeBC, "{ b: number; c: number }"); // 返回true

我之前试过用ts.createPrinter打印类型后对比字符串,但这个方法只能输出类型的原始实现,没法得到扁平化后的类型(类似type Flatten<T> = T extends {} ? { [k in keyof T]: T[k] } : T;这种展开后的结果)。

因为TypeScript Playground满足不了需求,我创建了一个StackBlitz复现示例。

内容的提问来源于stack exchange,提问作者Eliya Cohen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:20:23