【发布时间】:2023-01-31 05:15:10
【问题描述】:
我正在尝试将一个函数从 Javascript 转换为 Typescript,但我一直遇到以下错误:
类型“undefined”不能用作索引类型
我知道 undefined 不能用作索引,但我已经尝试对索引类型进行空检查以及条件渲染,但似乎没有任何效果。
这是我的代码:
我用于函数的值的 useState 挂钩
const [newUser, setNewUser] = useState({ firstName: "", lastName: "", companyName: "", email: "", password: "", id: "" }); const [errorMessage, setErrorMessage] = useState("");该函数本质上是采用 newUser 的初始值,制作该对象的副本,然后调用 setNewUser 将用户输入的字段填充到 newUser 复制的对象中。
const setValues = (propName?: number, value?: any) => { const cloneUser = { ...newUser }; cloneUser[propName] = value; setNewUser({ ... cloneUser }); setErrorMessage(""); }我的主要问题是
cloneUser[propName]不能未定义并用作索引,我不确定如何解决这个问题。
【问题讨论】:
-
我猜是因为
propName在你的setValues函数中是可选的。 -
@DavidScholz 一旦我删除了?从 propName 我收到以下错误:
Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{ firstName: string; lastName: string; companyName: string; email: string; password: string; id: string; }'.
标签: typescript react-native object indexing undefined