装饰器和私有字段 javascript
Decorators and Private fields javascript
我发现自己在尝试使用具有本机 javascript 私有属性 (#) 的装饰器,而这些首先使用的 'recognize' 不起作用。
我通过在我的值对象的私有属性上使用 class-validator 装饰器来识别这一点。
我在代码编辑器中得到的错误是:装饰器在这里无效
示例:
import { IsString } from 'class-validator';
Class Person {
@IsString()
#name: string;
constructor(name: string) {
this.#name = name;
}
get name(): string {
return this.#name;
}
}
Okey,按照 VLAZ 的建议:
Private fields in JS are completely private and inaccessible to anything from outside. Thus it makes sense they cannot be decorated - there is no way for the decorator to access them.
这是完全正确的,所以当我仔细查看值对象时,我意识到它确实具有 public get
属性,因此通过测试可以在这些对象上使用装饰器属性。
留下这样的东西:
import { IsString } from 'class-validator';
Class Person {
#name: string;
constructor(name: string) {
this.#name = name;
}
@IsString()
get name(): string {
return this.#name;
}
}
我发现自己在尝试使用具有本机 javascript 私有属性 (#) 的装饰器,而这些首先使用的 'recognize' 不起作用。
我通过在我的值对象的私有属性上使用 class-validator 装饰器来识别这一点。
我在代码编辑器中得到的错误是:装饰器在这里无效
示例:
import { IsString } from 'class-validator';
Class Person {
@IsString()
#name: string;
constructor(name: string) {
this.#name = name;
}
get name(): string {
return this.#name;
}
}
Okey,按照 VLAZ 的建议:
Private fields in JS are completely private and inaccessible to anything from outside. Thus it makes sense they cannot be decorated - there is no way for the decorator to access them.
这是完全正确的,所以当我仔细查看值对象时,我意识到它确实具有 public get
属性,因此通过测试可以在这些对象上使用装饰器属性。
留下这样的东西:
import { IsString } from 'class-validator';
Class Person {
#name: string;
constructor(name: string) {
this.#name = name;
}
@IsString()
get name(): string {
return this.#name;
}
}