2015-10-29 19 views
6

TypeScript 1.6 kullanıyorum ve soyut bir yöntemle soyut bir sınıf oluşturmak istiyorum ancak somut sınıfta bir lambda/ok işlevi kullanın.Lambda/ok işlevini kullanan TypeScript soyut yöntemi

Bu mümkün mü? o

... "Sınıf 'Base' örneği üyesi 'def' fonksiyonunu ancak genişletilmiş sınıf örneği üyesi özelliği olarak tanımlar 'Beton' tanımlar"

abstract class Base { 
    abstract abc(): void; 
    abstract def(): void; 
} 

class Concrete extends Base { 
    private setting: boolean; 

    public abc(): void { 
     this.setting = true; 
    } 

    public def =(): void => { 
     this.setting = false; 
    } 
} 

cevap

2

söylediği gibi aşağıda gösterilen kod derleme değil typescript şartnamelerin Anladığım kadarıyla

public def =(): void => { 
    this.setting = false; 
} 

ilan edildiğinde aslında bir property denilen def değil Base sınıfına bir method ilan olmasıdır.

Özellikleri (maalesef IMHO) daktilo soyutlanamaz: kesinlikle hata mesajı yapacak https://github.com/Microsoft/TypeScript/issues/4669

+0

çok daha mantıklı. Ne yazık ki, benim def yöntemi bir söz verir bir söz ve bir geri arama sözünün içinde "ben" bu nedenle bir lambda/ok işlevini kullanmak istemek gerek. Bu yüzden, diğer tek seçeneğim var self = kullanmak; vb –