Das sieht aus wie es aus dem Intersection Types Teil der Language Specification ist. Insbesondere scheint die &
eine intersection type literal zu sein. Was das bedeutet:
Schnittpunkttypen repräsentieren Werte, die gleichzeitig mehrere Typen haben. Ein Wert eines Schnittpunkttyps A & B ist ein Wert, der sowohl vom Typ A als auch vom Typ B ist. Schnittpunkttypen werden unter Verwendung von Schnitttypliteralen (Abschnitt 3.8.7) geschrieben.
Die Spezifikation geht auf einen hilfreichen Schnipsel bieten besser das Verhalten zu verstehen:
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
Da ab
ist sowohl vom Typ A
und vom Typ B
, wir es a
zuweisen können und/oder b
. Wenn ab
nur vom Typ B
wären, könnten wir ihn nur b
zuweisen.
Der Code, den Sie freigegeben haben, kann von this comment on GitHub sein, die Intersection Typen erwähnt.