Комментарии 3
Не очень понятен смысл вот этого:
Модификатора доступа нет, без @rw оно не будет доступным для чтения и для записи?
Read only поле в ES6 и typescript вообще можно сделать убрав сеттер и оставив только геттер.
Да и зачем вам дескрипторы, если есть поддержка get и set?
@rw value?: string = '';
Модификатора доступа нет, без @rw оно не будет доступным для чтения и для записи?
Read only поле в ES6 и typescript вообще можно сделать убрав сеттер и оставив только геттер.
Да и зачем вам дескрипторы, если есть поддержка get и set?
+1
Модификатора доступа нет, без @rw оно не будет доступным для чтения и для записи?
Согласен, не очень понятно получилось. Суть его использования в том, что в коде декоратора @rw имеется такой кусочек кода:
Object.defineProperty(target, propertyKey.toString(), {
value: undefined,
configurable: true,
enumerable: true,
writable: true
});
С его помощью, мы принудительно объявляем свойства (на которых применён декоратор @rw) со значением undefined когда создаём экземпляр класса параметров.
Это всё нужно из-за того, что TypeScript вырезает свойства без заданных значений и мы теряем автодополнение в каком-нибудь Chrome DevTools.
Во-вторых, можно использовать такой декоратор «чтение и запись» для явного переопределения свойств с декоратором «только для чтения» в подклассах.
Read only поле в ES6 и typescript вообще можно сделать убрав сеттер и оставив только геттер. Да и зачем вам дескрипторы, если есть поддержка get и set?
Можно, но мы решили, что конечным разработчикам будет проще и короче использовать декораторы для всех таких штук, оставив класс с параметрами максимально простым.
Плюс декораторами можно удобнее решать и другие проблемы, пряча в них шаблонный повторяющийся код (например, при использования декоратора apiEvent, предыдущая установленная функция-обработчик сама отписывается, но разработчику достаточно использовать этот декоратор и не думать о тонкостях реализации механизма событий).
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как мы общаемся с React-компонентами при помощи декораторов в TypeScript