Я пытаюсь выяснить, как получить один экземпляр интерфейса в TypScript. У меня есть следующий код, который работает:Как получить один экземпляр интерфейса в Typcript
export interface IOpenStatus {
filePath: string;
openSuccess: boolean;
error: string;
fileData: string;
}
openStatus: IOpenStatus[];
Однако, если я хочу только один экземпляр интерфейса должны быть определены, это терпит неудачу:
openStatus: IOpenStatus;
Это терпит неудачу, а также:
let openStatus= new IOpenStatus();
Кажется, что массив «[]» каким-то образом заменяет механизм создания экземпляра (хотя и для нескольких экземпляров). В моей ситуации я никогда не хочу создавать экземпляр более одного экземпляра интерфейса.
Как создать экземпляр одного экземпляра интерфейса? Мне нужно использовать интерфейс, потому что я собираюсь вернуть эти данные с сервера с помощью этого же интерфейса.
UPDATE Я вижу, что часть проблемы была не указана в контексте. Я делаю это в приложении Angular2. В моей ситуации, я использовал
openStatus: IOpenStatus[];
как часть определения класса собственности (компонент, чтобы быть точным). Кажется, что нотация массива просто позволяет Javascript предвидеть создание массива типа интерфейса без какого-либо дальнейшего определения (его можно использовать как массив такого, сразу после этого).
Что я должен сделать, в конце концов использовать:
userOpenStatus = new OpenStatus();
является реализация интерфейса в классе, таких как:
export interface IOpenStatus {
filePath: string;
openSuccess: boolean;
error: string;
fileData: string;
}
export class OpenStatus implements IOpenStatus {
filePath: string;
openSuccess: boolean;
error: string;
fileData: string;
}
Вы не можете создать интерфейс. Они существуют, чтобы иметь контракт без реализации, поэтому копирование противоречит всей причине, по которой они существуют. – ssube
ok, так что если это так, то как это 'openStatus: IOpenStatus [];' ** делает ** реализует массив интерфейса? –
'IOpenStatus []' просто объявляет 'openStatus', чтобы в конечном итоге содержать массив' IOpenStatus', он не реализует и не создает никаких экземпляров. – ssube