gpt4 book ai didi

javascript - typescript :如何在构造函数之外初始化类属性

转载 作者:行者123 更新时间:2023-12-04 01:31:40 25 4
gpt4 key购买 nike

我有一个场景,我需要在构造函数之外初始化一个类属性。考虑以下示例。

class A {
public prop: MyPropType;
public id: string;

public constructor(id: string) {
this.id = id;
}

public init(value: string): void {
this.prop = new MyPropType(value);
}

public toString(): string {
return `${this.id} - ${this.prop.toString()}`;
}
}

在上述情况下,我得到了错误:
TS2564: Property ‘ prop’ has no initializer and is not definitely assigned in the constructor.

如果我将该属性设为可选 prop?: MyPropType然后它开始提示它的使用。
TS2532: Object is possibly 'undefined'.

这两个错误都是可以理解的。我正在 Typescript 中寻找正确的方法和方法来解决这种情况。

我们应该使用 as在每次使用时,例如 (this.prop as MyPropType).toString() ,或者还有其他 typescript 方式吗?

如果我们对函数的使用做出断言,为什么 Typescript 没有识别它?

    public toString(): string {
assert(this.prop, 'Object property is not initialized');

return `${this.id} - ${this.prop.toString()}`;
}

Typescript 有什么方法可以识别上述场景并且感觉还可以吗?

最佳答案

您可以关闭"strictPropertyInitialization"在您的 tsconfig 中声明所有属性都必须在构造函数中初始化或

使用 Non-null assertion operator / bang operator例如

public prop!: MyPropType;

关于javascript - typescript :如何在构造函数之外初始化类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768254/

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