Я пытаюсь создать класс модели с конфиденциальностью, поэтому у меня есть этот класс с clousures в файле модели Отвечать:
export class Answer {
getId;
getText;
constructor(id: string, text: string) {
const idPrivate = id;
const textPrivate = text;
this.getId = () => idPrivate;
this.getText = () => textPrivate;
}
}
Поэтому я могу использовать его таким образом в других файлах:
import {Answer} from '../shared/model/Answer';
...
const answers: Array<Answer> = [];
answers.push(new Answer('1', '1'));
Теперь с ES6 у нас есть Символ, поэтому я пытаюсь сделать то же самое, но у меня проблемы с экспортом и использованием функции. Это код:
const Answer = (() => {
const idPrivate = Symbol();
const textPrivate = Symbol();
class Answer {
constructor(id: string, text: string) {
this[idPrivate] = id;
this[textPrivate] = text;
}
getId() {
return this[idPrivate];
}
getText() {
return this[textPrivate];
}
}
return Answer;
})();
export {Answer};
Как я могу использовать эту функцию IIFE? Например, для этого кода:
const answer = Answer('ss', 'ss');
Я получаю это сообщение об ошибке: «Выражение метода не относится к типу функции». Как я могу вызвать конструктор Отвечать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я считаю, что мы называем классы «новыми», например: новый ответ()
Да, проблема была в том, что когда я создаю "константные ответы: Array<Answer> = [];" Я получаю сообщение об ошибке "Ответ неразрешенного типа", как я могу определить массив ответов?
Разве не подходит const answer= []?
Использование TS не лучше определить тип массива?
вы экспортируете класс
Answerи вызываете его как функцию? используйтеnewдля класса