Не удается установить свойство ‘hello’ неопределенного значения в Typescript

#javascript #typescript

#javascript #typescript

Вопрос:

Я пытаюсь создать класс в typescript, но он всегда выдает ошибку, указанную ниже.

Ниже приведен журнал выполнения, и он выдает ошибку .

 [LOG]: "adding" 
[LOG]: undefined 
[ERR]: Cannot set property 'hello' of undefined 
  
 class CustomDataStructure {
    private _data: any;

    public CustomDataStructure() {
        this._data = {};
    }

    public addItem(value: string) {
        console.log("adding");
        console.log(this._data)
        this._data[value] = new Date().getTime();
    }

    public removeItem(key: string) {
        delete this._data[key];
    }

    public showData() {
        return this._data;
    }
}


let ss = new CustomDataStructure();
ss.addItem("hello");
  

Комментарии:

1. Что дает вам консоль внутри addItem ?

2.У вас нет constructor настройки this._data CustomDataStructure , которая не делает то, что вы думаете.

Ответ №1:

Вам нужно вызвать конструктор, который задает this._data значение чему-то вроде empty object:

 class CustomDataStructure {
 private _data: any;

 constructor() {
     this._data = {};
 }

 public addItem(value: string) {
    console.log("adding");
    console.log(this._data)
    this._data[value] = new Date().getTime();
    console.log(this._data)
 }

 public removeItem(key: string) {
    delete this._data[key];
 }

 public showData() {
    return this._data;
 }
}


let ss = new CustomDataStructure();
ss.addItem("hello");
  

Ответ №2:

 class CustomDataStructure {
    private _data: any;

    constructor() {
        this._data = {};
    }

    public addItem(value: string) {
        console.log("adding");
        console.log(this._data)
        this._data[value] = new Date().getTime();
    }

    public removeItem(key: string) {
        delete this._data[key];
    }

    public showData() {
        return this._data;
    }
}
let a = new CustomDataStructure();
a.addItem("Hello")
console.log(a.showData())