
因此,在进行了更多研究之后,我可以提供一些有关上述代码中发生的情况的上下文。
当你这样做
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 });欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)