2015-11-23 30 views
9

Staram się znaleźć definicję operatora & w TypeScript. Niedawno natknąłem następującego kodu:Maszynopis i operator

type IRecord<T> = T & TypedMap<T>; 

Co oznacza, że ​​operator zrobić i czym różni się ona od rodzaju związków |?

Odpowiedz

18

Wygląda na to, że pochodzi z części Specyfikacji języka od Intersection Types. W szczególności, & wydaje się być intersection type literal. Jeśli chodzi o to, co robi:

Typy przecięć reprezentują wartości, które jednocześnie mają wiele typów. Wartość typu przecięcia A & B jest wartością zarówno typu A, jak i typu B. Typy przecięć są zapisywane za pomocą literałów typu przecięcie (sekcja 3.8.7).

Spec idzie do zaoferowania jako fragment lepiej zrozumieć zachowanie:

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 

Ponieważ ab jest zarówno typu Ai typu B możemy przypisać go do a i/lub b. Jeśli ab były tylko typu B, moglibyśmy przypisać je tylko do b.

Kod, który udostępniono, może być z this comment on GitHub, który wymienia typy przecięć.