gpt4 book ai didi

typescript - 为什么 TS 在属性未初始化时编译不同

转载 作者:搜寻专家 更新时间:2023-10-30 21:42:58 24 4
gpt4 key购买 nike

export class test{
foo: Boolean;
bar: Boolean = undefined;
}

编译为:

export class Test {
constructor() {
this.bar = undefined;
}

请注意,foo 不会成为属性。

这是 typescript 中的错误吗?

今天这让我很生气,因为我使用的绑定(bind)框架 (Aurelia) 适用于 bar 示例,但不适用于 foo。

在我看来,foo 应该像 bar 一样自动创建为一个属性。

最佳答案

这不是错误。由于 test.foo 无论哪种方式都是 undefined(这通常是您唯一关心的事情),因此耗尽更多内存和时间做一些事情是没有意义的通常毫无意义。

不自动初始化属性让您可以选择您想要的行为:如果您想要一个自己的属性(因为有人在您的类实例上调用 Object.keys 或等效项),请对其进行初始化。如果你不这样做(因为你想节省内存和时间),就不要。

关于typescript - 为什么 TS 在属性未初始化时编译不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34384079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com