关于类构造函数中未初始化变量的 TypeScript 错误

罗伯特·库珀

TypeScript 抱怨未初始化的类属性,即使它似乎已正确分配。

这是一个最小的可重现示例:

type Config = {
    color: string;
}

class Toto {
    color: string;

    constructor(config: Config) {
        this.setConfig(config);
    }

    setConfig(config: Config) {
        this.color = config.color;
    }
}

打字稿游乐场

编译器在color属性定义下划线并抛出以下错误:

属性 'color' 没有初始化器,也没有在构造函数中明确分配。

问题似乎在于使用setConfig方法设置 的值color,因为以下代码不会产生编译器错误:

type Config = {
    color: string;
}

class Toto {
    color: string;

    constructor(config: Config) {
        this.color = config.color;
    }
}

这个问题是我希望能够setConfig在类实例的生命周期内使用该方法将类属性设置为不同的值。我不想为了setConfig解决 TS 编译器问题而在构造函数和方法中重复相同的代码

有谁知道为什么编译器看不到在构造函数中正确设置了类变量?

伪经

如果您作为开发人员确定color不会在构造函数中未初始化,您可以告诉编译器这是这种情况:

type Config = {
    color: string;
}

class Toto {
    color!: string;

    constructor(config: Config) {
        this.setConfig(config);
    }

    setConfig(config: Config) {
        this.color = config.color;
    }
}

!告诉编译器,当这个变量将不会在该点为空!时使用。

当然,在理想的世界中,编译器将能够检测到间接设置,但我认为目前这是不可能的。

游乐场链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

Java中错误“未在默认构造函数中初始化变量Y”背后的内部过程是什么?

来自分类Java

在构造函数中初始化静态变量时,为什么Java不给出错误?

来自分类Java

Spring错误:(21,34)java:变量customUriBuilder未在默认构造函数中初始化

来自分类Dev

为什么在Ruby中未初始化的实例变量返回nil,但是未初始化的类变量引发错误?

来自分类Dev

Ruby类中的未初始化常量错误

来自分类Dev

使用默认构造函数的引用成员变量初始化错误

来自分类Dev

记录构造函数和字段初始化错误

来自分类Dev

TypeScript-更新到Angular 7后WebStorm中的初始化错误

来自分类Dev

Typescript中的“太多递归”错误

来自分类Dev

尝试在构造函数中的`glm :: cross`上初始化我的类段错误

来自分类Dev

构造函数中的最终初始化错误

来自分类Dev

TypeScript中的变量声明错误

来自分类Dev

基类初始化错误,没有匹配的构造函数

来自分类Dev

vscode中的C ++:错误:没有匹配的构造函数来初始化'std :: thread'

来自分类Dev

如何使可以使用Typescript中的对象或常规参数构造函数初始化的类?

来自分类Dev

如何忽略MSVC中未初始化的变量错误

来自分类Dev

TypeScript中的类型约束错误

来自分类Dev

如何处理构造函数中发生的初始化错误,构造函数中不允许返回

来自分类Dev

Java未初始化的变量错误

来自分类Dev

变量初始化错误

来自分类Dev

在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

来自分类Dev

即使在构造函数中初始化 TypeScript 变量后,它们也未定义。下面提供了完整的打字稿代码

来自分类Dev

错误的输出和变量未在使用 Eclipse CDT 的构造函数中初始化

来自分类Dev

无法通过 Java 中的构造函数初始化对象:错误编译

来自分类Dev

如何修复构造函数中初始化 E 元素数组的错误?

来自分类Dev

TypeScript - 实用方法中的错误

来自分类Dev

获取错误:C 中的“变量......在其自身的初始化中使用时未初始化”

来自分类Dev

TypeScript - 变量赋值的 SetTimeOut 错误

来自分类Dev

BannerAd 变量未初始化错误

Related 相关文章

  1. 1

    Java中错误“未在默认构造函数中初始化变量Y”背后的内部过程是什么?

  2. 2

    在构造函数中初始化静态变量时,为什么Java不给出错误?

  3. 3

    Spring错误:(21,34)java:变量customUriBuilder未在默认构造函数中初始化

  4. 4

    为什么在Ruby中未初始化的实例变量返回nil,但是未初始化的类变量引发错误?

  5. 5

    Ruby类中的未初始化常量错误

  6. 6

    使用默认构造函数的引用成员变量初始化错误

  7. 7

    记录构造函数和字段初始化错误

  8. 8

    TypeScript-更新到Angular 7后WebStorm中的初始化错误

  9. 9

    Typescript中的“太多递归”错误

  10. 10

    尝试在构造函数中的`glm :: cross`上初始化我的类段错误

  11. 11

    构造函数中的最终初始化错误

  12. 12

    TypeScript中的变量声明错误

  13. 13

    基类初始化错误,没有匹配的构造函数

  14. 14

    vscode中的C ++:错误:没有匹配的构造函数来初始化'std :: thread'

  15. 15

    如何使可以使用Typescript中的对象或常规参数构造函数初始化的类?

  16. 16

    如何忽略MSVC中未初始化的变量错误

  17. 17

    TypeScript中的类型约束错误

  18. 18

    如何处理构造函数中发生的初始化错误,构造函数中不允许返回

  19. 19

    Java未初始化的变量错误

  20. 20

    变量初始化错误

  21. 21

    在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

  22. 22

    即使在构造函数中初始化 TypeScript 变量后,它们也未定义。下面提供了完整的打字稿代码

  23. 23

    错误的输出和变量未在使用 Eclipse CDT 的构造函数中初始化

  24. 24

    无法通过 Java 中的构造函数初始化对象:错误编译

  25. 25

    如何修复构造函数中初始化 E 元素数组的错误?

  26. 26

    TypeScript - 实用方法中的错误

  27. 27

    获取错误:C 中的“变量......在其自身的初始化中使用时未初始化”

  28. 28

    TypeScript - 变量赋值的 SetTimeOut 错误

  29. 29

    BannerAd 变量未初始化错误

热门标签

归档