Typescript - console.log не показывает свойства объекта - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь перебрать свойства объекта, но не могу этого достичь.

export class Test {
    public property1: string;
    public property2: number;

    test() {
        console.log(this);
        console.log(Object.getOwnPropertyNames(this));
    }
}

...

const t = new Test();
t.test();

console.log(this) не печатает никаких свойств, поэтому итерация в строке ниже возвращает пустой массив.

Почему? (Я также пробовал с Object.keys (это))

Редактировать: конечная цель сделать это:

export class MyObjectWithLessProperties {
    // lot of properties

    constructor(object: MyObjectWithMoreProperties) {
        Object.keys(this).forEach((key: string) => this[key] = object[key]);
    }
}

1 Ответ

0 голосов
/ 03 апреля 2020

Вы не инициализировали значения свойств, поэтому ожидается, что они будут нулевыми.

Это будет работать, как и ожидалось:

class Test {
    public property1: string = "test";
    public property2: number = 123;

    test() {
        console.log(this);
        console.log(Object.getOwnPropertyNames(this));
    }
}

const a = new Test();
a.test();

Лучший способ go об этом создать конструктор для класса Test и при создании нового Test () передать нужные значения в виде параметров

Пример:

class Test {
    private property1: String;
    private property2: number;

    constructor(property1: String, property2: number) {
        this.property1 = property1;
        this.property2 = property2;
    }

    test() {
        console.log(this);
        console.log(Object.getOwnPropertyNames(this));
    }
}

const a = new Test("test", 123);
a.test();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...