#angular
Вопрос:
В проекте Angular я использую интерфейс.
export interface School {
name: string = '';
website: string;
registrationNumber: string;
dateEstablished: Date;
address: string;
country: [];
companyLogo: any = '';
clear() {
this.name = '';
this.website = '';
this.registrationNumber = '';
this.dateEstablished = null;
this.address = '';
this.country = [];
this.companyLogo = '';
}
}
У меня две ошибки:
-
Объект, возможно, «неопределен» — и все «это». Выделено
-
Ожидается объявление или заявление.ts(1128) — и последняя закрывающая фигурная скобка выделена.
-
ожидаемая подпись вызова: «очистить», чтобы иметь typedef (typedef)tslint(typedef)
Как мне получить это разрешение?
Спасибо
Комментарии:
1. Я могу ошибаться, но я не думаю, что интерфейс может содержать реализацию метода. Интерфейсы описывают элементы, которые должны присутствовать в конкретной реализации интерфейса. Они не содержат своих определений. Видели ли вы информацию, которая свидетельствует об обратном?
2. @JLRishe — Как лучше всего это сделать? Пожалуйста, посоветуйте
Ответ №1:
Вам нужна реализация этого интерфейса, как это:
файл: school.ts
interface ISchool {
name: string = '';
website: string;
registrationNumber: string;
dateEstablished: Date;
address: string;
country: [];
companyLogo: any = '';
clear(): () => void;
}
export class School implements ISchool {
// Declare all attributes here;
public name: string = '';
...
clear() {
this.name = '';
this.website = '';
this.registrationNumber = '';
this.dateEstablished = null;
this.address = '';
this.country = [];
this.companyLogo = '';
}
}
файл app.ts
import {School} from 'school.ts';
const someSchool = new School();
someSchool.clear();
Это базовая технология объектной ориентации, поэтому я бы рекомендовал изучить использование классов вместе с интерфейсами.
Однако вам не нужен интерфейс, если у вас есть только один тип школы.
Комментарии:
1. Какой из двух (2) видов экспорта я использую? класс или интерфейс?
2. Вы должны создать экземпляр объекта класса school, например const someSchool = новая школа(); а затем вызвать someSchool.clear();
3. Извините, я не понимаю. Можете ли вы обновить код?