2015-11-23 40 views
9

TipScript'te & operatörünün tanımını bulmak için uğraşıyorum. Geçenlerde aşağıdaki kodla rastlamak: Typescript & operator

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

o operatörün ne yapar

ve nasıl birlik tip | farklıdır?

cevap

18

Bu, Dil Belirtiminin Intersection Types bölümünden alınmış gibi görünüyor. Spesifik olarak, &, intersection type literal olarak görünür. Ne olduğu gibi:

Kesişim türleri, aynı anda birden çok türe sahip değerleri temsil eder. A & B kesişim değerinin her ikisi de A tipi ve B tipi olan bir değerdir. Kesişim türleri, kesişim türü değişmezleri kullanılarak yazılır (bölüm 3.8.7).

Spec daha iyi davranışlarını anlamak için yararlı bir pasajı sunmaya devam ediyor: tip hem Ave tip B ait, biz a atayabilirsiniz olduğunu

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 

ab Çünkü ve/veya b. ab yalnızca B türündeyse, yalnızca b'a atayabiliriz.

Paylaştığınız kod, Kesişim Türlerinden söz eden this comment on GitHub'dan olabilir.