Создать экземпляр, используя интерфейс
В моем приложении Angular 2 TypeScript я определял интерфейс, а не класс, чтобы разрешать необязательные параметры.
Насколько я знаю, я должен где-то реализовать интерфейс следующим образом:
Класс экспорта myClass реализует myInterface {...}
а затем создать его с помощью new(...)
.
Я задавался вопросом, является ли это правильным способом (в Angular 2) или есть более простой/лучший способ?
Кроме того, где я должен поместить реализацию, в компонент (.ts), где я его использую, где находится интерфейс или где?
Ответы
Ответ 1
Вы можете это сделать. Вы также можете просто создать объект, который реализует интерфейс, например:
interface foo {
one: number;
two: string;
}
const bar: foo = { one: 5, two: "hello" };
Если вы хотите использовать класс, вы можете поместить его туда, где хотите. Если он плотно связан с компонентом, вы можете поместить его туда. Вообще, хотя, я хочу, чтобы классы были слабо связаны, поэтому я помещал их в свой собственный файл.
Ответ 2
Я использую этот путь
interface IObject{
first: number;
second: string;
}
тогда
var myObject = {} as IObject
var myListObject = [] as Array<IObject>
Ответ 3
Вы можете сделать следующее:
export interface IMyInterface {
property1: string;
property2: number;
property3: boolean;
}
export class MyClass implements IMyInterface {
property1: string = '';
property2: number = 1;
property3: boolean = false;
constructor(){}
}
Затем для создания экземпляра:
let newFromInterface = new MyClass();
Вот как я это делаю в своем коде, по крайней мере.
Ответ 4
interface IOffice {
id: number;
employeeName: string;
phone?: number;
}
export class OfficeComponent {
officeData: IOffice= <IOffice>{};
dummyOfficeData: IOffice = {id: 1, employeeName: 'ragnar', phone: 123};
noPhoneOfficeData: IOffice = {id: 2, employeeName: 'floki'};
constructor(){
console.log(this.dummyOfficeData);
console.log(this.dummyOfficeData);
}
}
это лучший способ для меня. Вы можете экспортировать интерфейс из файла модели и импортировать в любые необходимые компоненты.