我正在努力寻找定义&
TypeScript 中的运算符。我最近遇到了以下代码:
type IRecord<T> = T & TypedMap<T>;
该运算符的作用是什么,它与联合类型有何不同|
?
这看起来像是来自交叉口类型 https://github.com/microsoft/TypeScript/blob/v4.5.4/doc/spec-ARCHIVED.md#35-intersection-types语言规范的一部分。具体来说,&
is an 交集类型文字 https://github.com/microsoft/TypeScript/blob/v4.5.4/doc/spec-ARCHIVED.md#3.8.7。至于它的作用:
交集类型表示同时具有多种类型的值。交集类型 A 和 B 的值是同时属于类型 A 和类型 B 的值。交集类型是使用交集类型文字编写的(第 3.8.7 节)。
该规范还提供了一个有用的片段,以更好地理解该行为:
interface A { a: number }
interface B { b: number }
var ab: A & B = { a: 1, b: 1 };
var a: A = ab; // A & B assignable to A
var b: B = ab; // A & B assignable to B
Because ab
都是两种类型A
and类型的B
,我们可以将其分配给a
and/or b
. If ab
只是类型B
,我们只能将其分配给b
.
您分享的代码可能来自GitHub 上的这条评论 https://github.com/facebook/immutable-js/issues/341#issuecomment-147523795,其中提到了交叉点类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)