![]() |
1
3
您的基本问题是TypeScript类型系统有点不健全(因此您可以编写一些非类型安全的代码)。稳健性为 not a goal 虽然如果此错误很常见,但如果您打开 issue in GitHub . 我找不到解决你问题的方法。 这里的特别不健全与不强制执行有关 type variance . 简而言之,财产 读取 的子类型可以是 协变的 (子类可以缩小其只读属性),但属性 写入 只能是 逆变的 (子类应 拓宽 其仅写属性)。如果属性既要读也要写,则必须 不变的 保持健康。 TypeScript允许子类属性 协变的 . 这意味着当您读取属性时,事情通常运行良好,但有时当您编写属性时,可能会发生不好的事情。 让我用更少的代码重申一下这里的主要问题:
查看如何
在您的情况下,您的子类正在调用超类的构造函数方法来编写一个(更宽的)属性,即使子类可能已经缩小了该属性的范围。这是同一个问题。 因此,这里有一种可能的方法来解决您的特定问题:使用泛型来指定您的实际约束,以便缩小/扩大只发生在您期望的地方:
要修复上述错误,应将构造函数更改为只接受
希望有帮助;祝你好运 |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
![]() |
nick2225 · 隐式调用复制构造函数? 3 年前 |
![]() |
nohaga · 为什么在本例中p3需要默认构造函数? 3 年前 |
![]() |
Aadil Hoda · 为什么类类型的成员需要初始化? 3 年前 |
![]() |
EloiGG · 具有任意类型的变量的可数的C++函数 3 年前 |