2016-05-18 2 views
3

Так что я знаю, что могу установить геттеры/сеттеры на каждое свойство.«Экстремальный» приемник/сеттер для класса TypeScript?

export class Person { 
    private _name: string; 

    set name(value) { 
     this._name = value; 
    } 

    get name() { 
     return this._name; 
    } 
} 

Но есть способ, чтобы иметь «глобальный экземпляр для всего» сеттера, которые запускают каждый раз, когда любое свойство экземпляра класса модифицируются? Без ручного добавления вызова функции в каждом геттере/сеттере, вызывающем эту функцию триггера? Как, что-то встроенное в TypeScript?

Заранее спасибо.

+0

Для чего вам это нужно? – Bergi

+0

@Bergi Я хочу генерировать событие всякий раз, когда экземпляр меняет, а не излучает его (или вызывает функцию излучения внутри класса) в каждом сеттере (что также требует от меня добавления сеттеров, когда они мне не нужны, способный отслеживать изменения). –

+0

Так что вам не нужно смотреть какие-либо свойства, но только все свойства, которые имеет экземпляр. Вы можете легко добавлять сеттеры к ним программным способом. – Bergi

ответ

5

Для этого не существует встроенного способа в TypeScript, а также функции выполнения JavaScript для него.

Ближайшей вещью будет Proxy, которая может обернуть базовый объект и перехватить присвоения свойств. Но вам нужно будет убедиться, что экземпляры классов были обернуты до того, как их передали в другое место.

Смежные вопросы