Penso che tu abbia sostanzialmente cinque diverse opzioni per farlo. Scegliere tra loro potrebbe essere facile a seconda dell'obiettivo che vorresti raggiungere.
Il modo migliore nella maggior parte dei casi per usare una classe e crearne un'istanza , poiché stai usando TypeScript per applicare il controllo del tipo.
interface IModal {
content: string;
form: string;
//...
//Extra
foo: (bar: string): void;
}
class Modal implements IModal {
content: string;
form: string;
foo(param: string): void {
}
}
Anche se altri metodi offrono modi più semplici per creare un oggetto da un'interfaccia, dovresti considerare di dividere la tua interfaccia a parte, se stai usando il tuo oggetto per questioni diverse e non causa la sovra-segregazione dell'interfaccia:
interface IBehaviour {
//Extra
foo(param: string): void;
}
interface IModal extends IBehaviour{
content: string;
form: string;
//...
}
D'altra parte, ad esempio durante il test dell'unità del codice (se non si può applicare frequentemente la separazione delle preoccupazioni), si potrebbe essere in grado di accettare gli svantaggi per motivi di produttività. Puoi applicare altri metodi per creare simulazioni principalmente per interfacce di terze parti * .d.ts. E potrebbe essere una seccatura implementare sempre oggetti completamente anonimi per ogni enorme interfaccia.
In questo percorso la prima opzione è creare un oggetto vuoto :
var modal = <IModal>{};
In secondo luogo, realizzare pienamente la parte obbligatoria della tua interfaccia . Può essere utile se stai chiamando librerie JavaScript di terze parti, ma penso che dovresti invece creare una classe, come prima:
var modal: IModal = {
content: '',
form: '',
//...
foo: (param: string): void => {
}
};
In terzo luogo puoi creare solo una parte della tua interfaccia e creare un oggetto anonimo , ma in questo modo sei responsabile di adempiere al contratto
var modal: IModal = <any>{
foo: (param: string): void => {
}
};
Riassumendo la mia risposta anche se le interfacce sono opzionali, poiché non sono traspilettate in codice JavaScript, TypeScript è lì per fornire un nuovo livello di astrazione, se usato con saggezza e coerenza. Penso, solo perché puoi scartarli nella maggior parte dei casi dal tuo codice, non dovresti.