例如,我想从给定的联合类型中排除函数类型。
我发现可以通过添加一个工具函数来实现它,例如:
type T = number | string | VoidFunction; // a GIVEN type
type R = ExcludeType<T, VoidFunction>; // number | string
我发现可以通过添加一个工具函数来实现它,例如:
type T = number | string | VoidFunction; // a GIVEN type
function f(v: T) {
if (v instanceof Function) return undefined;
return v;
}
type R = typeof f; // number | string
但我认为这种方法过于复杂且难以扩展,而且我也无法在“.d.ts”文件中使用它。
有更好的方法吗?
Exclude
对你无效?此外,以防有关联,可以查看我的答案在这里,其中展示了两种方法获取联合类型的子集 - 减法(使用Exclude
)和与另一个联合类型的交集(使用&
)。 - VLAZ