#javascript #typescript #decorator #private #class-validator
Вопрос:
Я обнаружил, что пытаюсь использовать декораторы с собственными частными свойствами javascript ( # ), и эти первые «распознающие», которые используются, не работают.
Я определил это с помощью декораторов-валидаторов классов в частных свойствах моих объектов значений.
Ошибка, которую я получаю в редакторе кода: Декораторы здесь недопустимы
Пример:
import { IsString } from 'class-validator';
Class Person {
@IsString()
#name: string;
constructor(name: string) {
this.#name = name;
}
get name(): string {
return this.#name;
}
}
Комментарии:
1. Частные поля в JS являются полностью частными и недоступными для всего, что находится снаружи. Поэтому имеет смысл, что они не могут быть украшены — у декоратора нет возможности получить к ним доступ.
Ответ №1:
Хорошо, как предложил ВЛАЗ:
Частные поля в JS являются полностью частными и недоступными для чего-либо извне. Поэтому имеет смысл, что они не могут быть украшены — у декоратора нет возможности получить к ним доступ.
Это совершенно правильно, поэтому, когда я более внимательно посмотрел на объект value, я понял, что у него есть общедоступные get
свойства, поэтому, протестировав, можно использовать декораторы для этих свойств.
Оставив что-то вроде:
import { IsString } from 'class-validator';
Class Person {
#name: string;
constructor(name: string) {
this.#name = name;
}
@IsString()
get name(): string {
return this.#name;
}
}