Bence bunu yapmak için beş farklı seçeneğiniz var . Aralarından seçim yapmak, ulaşmak istediğiniz hedefe bağlı olarak kolay olabilir.
Çoğu durumda bir sınıf kullanmanın ve onu başlatmanın en iyi yolu , çünkü yazım denetimini uygulamak için TypeScript kullanıyorsunuz.
interface IModal {
content: string;
form: string;
//...
//Extra
foo: (bar: string): void;
}
class Modal implements IModal {
content: string;
form: string;
foo(param: string): void {
}
}
Diğer yöntemler bir arabirimden nesne oluşturmanın daha kolay yollarını sunsa bile, nesnenizi farklı konular için kullanıyorsanız ve arabirimin aşırı ayrılmasına neden olmazsa: Arabiriminizi ayırmayı düşünmelisiniz :
interface IBehaviour {
//Extra
foo(param: string): void;
}
interface IModal extends IBehaviour{
content: string;
form: string;
//...
}
Öte yandan, örneğin kodunuzu birim sınama sırasında (endişelerinizi sık sık ayırmıyorsanız) verimlilik uğruna dezavantajları kabul edebilirsiniz. Çoğunlukla büyük üçüncü taraf * .d.ts arayüzleri için alay oluşturmak için başka yöntemler uygulayabilirsiniz. Ve her büyük arayüz için her zaman tam anonim nesneler uygulamak acı verici olabilir.
Bu yolda ilk seçeneğiniz boş bir nesne oluşturmaktır :
var modal = <IModal>{};
İkincisi , arayüzünüzün zorunlu kısmını tam olarak gerçekleştirmek için . 3. taraf JavaScript kitaplıklarını çağırıyor olsanız da yararlı olabilir, ancak bunun yerine daha önce olduğu gibi bir sınıf oluşturmanız gerektiğini düşünüyorum:
var modal: IModal = {
content: '',
form: '',
//...
foo: (param: string): void => {
}
};
Üçüncü olarak , arayüzünüzün yalnızca bir bölümünü oluşturabilir ve anonim bir nesne oluşturabilirsiniz , ancak bu şekilde sözleşmeyi yerine getirmekle sorumlusunuz
var modal: IModal = <any>{
foo: (param: string): void => {
}
};
Arayüzler isteğe bağlı olsa bile cevabımı özetlerken, JavaScript koduna aktarılmadığından, TypeScript akıllıca ve tutarlı bir şekilde kullanıldığında yeni bir soyutlama düzeyi sağlamak için oradadır. Bence, sadece çoğu durumda bunları kendi kodunuzdan reddedebilirsiniz çünkü yapmamalısınız.