2017-12-27 244 views
17

olmadan sınıfları kullanarak I (kısaca) aşağıdaki sözdizimini bulundu? "aHero" türünü kontrol ettiğimde, sadece bir nesne ve "Hero" tipi değil. Sadece bir kurucu ile bir nesne başlatılıyor daha iyi ?:typescript, Açısal web sitesinde "Tur Heroes" öğretici ile çalışırken yapıcı

class Hero { 
    constructor(id: number, name: string) {} 
} 
+13

İyi soru. Cevap, öğreticinin kötü bir uygulamayı desteklediğidir. "Kahraman" bir "arayüz" olmalıdır. –

+2

Todd Motto bir [harika makale] (https://toddmotto.com/classes-vs-interfaces-in-typescript) farkını açıklar ve ne zaman/neden 'interface' vs 'class' kullanmak için – mhodges

+0

referans ekleyebilirsiniz bu kodla ilgili bölüme –

cevap

2

Sen kullandıysanız bunu yoludur türü olarak sınıfını kullanabilirsiniz olurdu. Yani, Hero'nun bir arabirim mi yoksa sınıf mı olduğu önemli değil, çünkü onu bir tür olarak kullanıyorsunuz.

class Hero { id: number; name: string } 

veya

interface Hero { id: number; name: string } 

şu Kahraman bir sınıf veya arabirim

let hero: Hero = { id: 1, name: 'me' } 
interface ve class ayrıştırıcı bir interface sizin için sadece olduğunu

, bu olmaz olsun değil endişeleri yok javascript içine transpile alamıyorum. Bir class yapar ve bir interface bir new yapamazsınız.

Oluşturucu veya hayır Oluşturucu, new ise o zaman bir instanceof. Eğer anahtar kelime new ile Hero örneğini yarattı çünkü true olacak bu

let hero = new Hero(); 

Sizin instanceof log ile tekrar deneyin.