对于 Typescript 交集类型(类型 C = A 和 B),如何在 IDE 提示中查看结果类型签名而不是组件?
For Typescript intersection type (type C = A & B), how to see resulting type signature instead of components in IDE hints?
在 Typescript 中,当检查交集定义的类型时,我看到与原始定义相同的提示:
但我想看看最终的形状,像这样:
什么是快速/高效的方法?
我认为没有任何方法可以让您的 IDE 自动执行此操作,但您可以创建一个类型函数来计算您要查找的类型。从 的答案,我会写 Expand
:
type Expand<T> = T extends infer U ? { [K in keyof U]: U[K] } : never;
它接受一个类型(或类型的联合)并遍历其所有属性,即使它们来自多个交集,并将它(或每个联合成员)打包到单个对象类型中。然后你可以写 Expand<C>
或者你可以定义 C
为 Expand<A & B>
:
type ExpandedC = Expand<A & B>;
/*
type ExpandedC = {
a: number;
b: string;
c: boolean;
d: Date;
}
*/
这就是你想要的。好的,希望有所帮助;祝你好运!
在 Typescript 中,当检查交集定义的类型时,我看到与原始定义相同的提示:
但我想看看最终的形状,像这样:
什么是快速/高效的方法?
我认为没有任何方法可以让您的 IDE 自动执行此操作,但您可以创建一个类型函数来计算您要查找的类型。从 Expand
:
type Expand<T> = T extends infer U ? { [K in keyof U]: U[K] } : never;
它接受一个类型(或类型的联合)并遍历其所有属性,即使它们来自多个交集,并将它(或每个联合成员)打包到单个对象类型中。然后你可以写 Expand<C>
或者你可以定义 C
为 Expand<A & B>
:
type ExpandedC = Expand<A & B>;
/*
type ExpandedC = {
a: number;
b: string;
c: boolean;
d: Date;
}
*/
这就是你想要的。好的,希望有所帮助;祝你好运!