event.target.value返回一个“字符串”值,我希望将其识别为ENUM类型。 我有以下代码:
export enum Permissions {
OnlyMe,
Everyone,
SelectedPerson
}
...
<FormControl>
<InputLabel>Label name</InputLabel>
<NativeSelect
value={state.user.permission}
onChange={(event) =>
setState({
...state,
user: {
...state.user,
permission: event.target.value as Permissions
}
})}
>
<option value={Permissions.OnlyMe}>Only me</option>
<option value={Permissions.Everyone}>Everyone</option>
<option value={Permissions.SelectedPerson}>Selected persons</option>
</NativeSelect>
我收到打字稿错误“将“字符串”类型转换为权限可能是一个错误,因为两种类型都无法与另一种充分重叠。”
我已经尝试过:
permission: Permissions(event.target.value) or
permission: Permissions(String(event.target.value))
,但没有任何效果。 谢谢
答案 0 :(得分:1)
TypeScript将枚举处理为数字,例如:
event.target.value
将返回一个字符串,所以您的问题是您试图将字符串转换为整数,您只需执行+event.target.value
即可解决问题,方法是使用js强制转换字符串值入侵+
。
注意:上述解决方案将返回一个数字,如果您希望将其作为字符串获取,可以执行Permissions[+event.target.value]