2016-09-18 32 views

cevap

6

Tip uyumluluğu: Kayıt için

number 

if (!(y instanceof Object)) { 
    console.log(typeof y) 
} 

baskılar nominal tipleme değil yapısal alt tipine dayanmaktadır.

interface IFoo { X: number } 
interface IBar { X: number; Y: number } 

IBarIFoo uzatır mı: Bu iki aşağıdaki arayüz tanımları dikkate dedi?

IBar ile uyumlu mu? Evet. IFoo ait

üye böylece herhangi IBarIFoo atayabilirsiniz, IBar üyeden bir alt grubudur. Ama tersi çalışmaz:

var x: IFoo; 
var y: IBar; 

x = y // all good 
y = x // type error, x has no Y member 

boş bir arayüz olarak düşünmek eğer her türlü Object ile uyumludur daktilo Bu şekilde. Bu şekilde, geçerli herhangi bir yazı tipi değerini Object kabul eden işlevlere iletebilir ve Javascript kitaplarının yazıldığı şekilde iyi oynayabilirsiniz.

belgelerini ve en son paragrafı Alt Tür vs Assignment ile okumanızı öneririm.

+1

Tamam, beklediğim bir açıklamadır (Object'e izomorf olan Bool adlı bir boş arabirime de bir bool atayabildiğimi fark ettikten sonra). Yapısal ve nominal değerlerini anlıyorum, ancak referans olmayan tiplere başvurmasını beklemiyordum. Sanırım bu sadece Nesnenin gerçekten boş bir ara yüzüne sahip olduğu (yani bir sayı veya ilkel dizeye yapamayacağım bir nesneye yapabileceğim şeyler göz önüne alındığında). – Roly

+0

Açıklamadan memnun oldum, cevabı kabul ettim. Isırılmış çıkıyor çıkıyor çünkü sayı Roly

+1

Sanırım, Roly