Я думаю, у вас є в основному п'ять різних варіантів для цього. Вибір серед них може бути простим залежно від мети, яку ви хочете досягти.
Найкраще в більшості випадків використовувати клас та інстанціювати його , тому що ви використовуєте TypeScript для застосування перевірки типу.
interface IModal {
content: string;
form: string;
//...
//Extra
foo: (bar: string): void;
}
class Modal implements IModal {
content: string;
form: string;
foo(param: string): void {
}
}
Навіть якщо інші методи пропонують простіші способи створення об’єкта з інтерфейсу, ви повинні розглянути розділення інтерфейсу на частини, якщо ви використовуєте об'єкт для різних питань, і це не викликає перерозподілу інтерфейсу:
interface IBehaviour {
//Extra
foo(param: string): void;
}
interface IModal extends IBehaviour{
content: string;
form: string;
//...
}
З іншого боку, наприклад, під час тестування вашого коду (якщо ви часто не застосовуєте розділення проблем), ви можете прийняти недоліки заради продуктивності. Ви можете застосувати інші методи для створення макетів здебільшого для великих інтерфейсів * .d.ts. І це може бути болем завжди реалізовувати повні анонімні об'єкти для кожного величезного інтерфейсу.
На цьому шляху ваш перший варіант - створити порожній об’єкт :
var modal = <IModal>{};
По-друге, повністю реалізувати обов'язкову частину вашого інтерфейсу . Це може бути корисно, чи викликаєте ви сторонні бібліотеки JavaScript, але я думаю, вам слід створити клас, як і раніше:
var modal: IModal = {
content: '',
form: '',
//...
foo: (param: string): void => {
}
};
По-третє, ви можете створити лише частину свого інтерфейсу та створити анонімний об’єкт , але таким чином ви несете відповідальність за виконання договору
var modal: IModal = <any>{
foo: (param: string): void => {
}
};
Підводячи підсумки моєї відповіді, навіть якщо інтерфейси необов’язкові, оскільки вони не транслюються в код JavaScript, TypeScript є там, щоб забезпечити новий рівень абстракції, якщо використовувати його розумно та послідовно. Я думаю, що тільки тому, що ви можете відхилити їх у більшості випадків із власного коду, ви не повинні.