栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

当你这样做

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 });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号