typescript - 交叉口类型的中性元素是什么?

标签 typescript

对于联合类型,never 是中性元素,即 never | T = T

另一种看待它的方法是,对于类型 T=[T_1, ..., T_n] 的元组,联合类型 T_1 | ... | T_nT[number] 给出。对于空元组 [][][number] 产生 never 是空类型集的联合类型。

哪种类型是相交类型的中性元素? IE。对于任意类型 T,哪个内置类型 N 产生 N & T = T,因此是空集的交集类型?

编辑

我的问题背后的理由是构建一个递归辅助类型来与元组类型中的所有类型相交。请参阅下面我的回答...

最佳答案

我自己想出来了:

对于联合类型,type NeutralUnion<T> = never | TT 相同.

对于交叉类型,type NeutralIntersection<T> = unknown & TT 相同.

所以,类似于构建 type UnionOfTupleElements<T> = T[number] ,我们可以构建:

type IntersectionOfTupleElements<T extends unknown[]> = 
  T extends [infer U, ...infer V] 
    ? U & IntersectionOfTupleElements<V> 
    : unknown;

它产生:

IntersectionOfTupleElements<[]> = unknown
IntersectionOfTupleElements<[T]> = T
IntersectionOfTupleElements<[T1, T2]> = T1 & T2

关于typescript - 交叉口类型的中性元素是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70697269/

相关文章:

typescript - 如何使用括号表示法检查 typescript 中的无效性

typescript 错误 : tsc: command not found

typescript - 在 @App 中使用管道不起作用 - ionic 2

javascript - 返回 Promise 的 TypeScript React Redux 操作

html - 无法在 typescript 中转换 HTMLSelectElement

javascript - 如何补偿圆形 slider 组件中的旋转容器 View ?

reactjs - Typescript:超时的正确类型是什么?

Angular 5 使用 blob 响应和 json 错误管理 http get

javascript - 在非 InputElement 上调用 Angular2 单击事件

typescript - 如何递归地使用 Typescript 泛型?