挑 ~~使用动态计算键键入~~

挑 ~~使用动态计算键键入~~,第1张

挑 ~~使用动态/计算键键入~~

因此,在进行了更多研究之后,我可以提供一些有关上述代码中发生的情况的上下文。

当你这样做

const name = 'Bob'
变量类型
name
'Bob'
不是
字符串。但是,如果你更换
const
let
let name = 'Bob'
)的变量
name
将是类型
string

这个概念称为“扩大”。基本上,这意味着类型系统尝试尽可能明确。由于

const
无法重新分配,Typescript可以推断出确切的类型。
let
语句可以重新分配。因此,Typescript将
string
(在上面的示例中)推断为的类型
name

也会发生同样的情况

const key = e.currentTarget.name as keyofPerson
key
将是(union)类型
"name"|"age"
,这正是我们想要的。 但是 在表达式
this.setState({[key]: value });
变量
key
中(错误地)将其扩展为
string


tl; dr;
看来Typescript中有错误。我将该问题发布到了Github仓库中,Typescript团队正在调查该问题。:)

作为临时解决方法,您可以执行以下 *** 作:

this.setState({ [key as any]: value });


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5477289.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存