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 |
?
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 |
?
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 A
i 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ęć.