sách gpt4 ăn đã đi

javascript - 只读属性和 ngOnInit

In lại 作者:太空狗 更新时间:2023-10-29 17:45:57 36 4
mua khóa gpt4 giày nike

只读属性只能在构造函数中赋值,但在 Angular 中,不鼓励甚至有时不可能使用构造函数进行某些初始化,而是使用 Angular 钩子(Hook) ngOnInit。有什么方法可以将 ngOnInit 标记为关于 readonly 属性的构造函数,以便我可以将 readonly 用于仅在 ngOnInit 中分配一次的本质上不可变的属性?

编辑:澄清一下:我不是在寻找其他方法来声明只读属性。我想以常规方式声明它们。我认为任何其他不值得为了获得静态检查而牺牲可读性的东西。我希望会有一些注释,例如 tslint 忽略 ngOnInit 中的不变性。

从目前的答案来看,我猜将它们分配为 (this as any).foo = bar; 是最接近我想要做的,尽管我猜它仍然比离开更丑陋出只读。

câu trả lời hay nhất

Readonly properties can only be assigned in the constructor

不正确

class MyClass {
readonly prop1 = 'prop1';
constructor(
public readonly prop2 = 'prop2'
) {
}

ngOnInit() {
Object.defineProperty(this, 'prop3', { wirtable: false, value: 'prop3'});
}
}

如您所见,已经有 3 种定义它们的方法。可能更多!

but in angular it is discouraged and sometimes impossible to use the constructor for certain initialization and instead the angular hook ngOnInit is used

对于新人来说是“气馁”的,因为告诉他们不要那样做比深入解释框架的生命周期更容易。关键是,您可以随心所欲地使用构造函数,尤其是对于与 Angular 无关的东西(比如只读变量)。

Is there any way to mark ngOnInit as a constructor

构造器就是构造器。您不能将方法定义为构造函数。您只能在构造函数中调用一个方法,但这不能解决您的问题。

so that I can use readonly for essentially immutable properties that are only assigned a single time in ngOnInit?

答案和底线:随心所欲地使用构造函数。如果需要,将只读属性放入其中。

此外,请考虑提供一些沙箱或至少一些代码,以便我们可以做出既适合您的代码又适合您的需要的答案。

关于javascript - 只读属性和 ngOnInit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54941950/

36 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress