我正试图使用TypeScript编写一段代码,其模式可简化为以下形式:
function test(x: {theFlag: boolean} & {readonly theFlag: boolean} ){
x.theFlag = true;
}
但是在这一行代码 x.theFlag = true;
上,我收到以下错误:
[ts] 无法分配给 'theFlag',因为它是一个常量或只读属性。
我不知道为什么TypeScript会报错。我认为逻辑上应该是允许的。
有没有好的解决方法来实现我想要做的事情?
我正在使用TypeScript版本2.7.2。
{readonly theFlag: boolean}
是具有getter的theFlag
值的集合,而{theFlag: boolean}
则是具有getter和setter的theFlag
值的集合。由于后者是前者的子集,它们的交集应该与{theFlag: boolean}
相同。 - Arashtype T={a:...}
和U={b:...}
。类型上的每个键都代表了对{}
的约束。T&U
并不是取 键 的交集(它不是{}
),而是取 约束 的交集 -- 一个类型要属于这个交集,它必须同时满足 T 和 U,因此T&U={a,b}
。这同样适用于 get/set 的例子 -- 要同时满足{get} & {get, set}
,它必须包含约束get
和约束set
:因此{x} & {readonly x} = {x}
。 - undefined