元素隐式具有 'any' 类型,因为类型 'typeof globalThis' 没有索引 signature.ts(7017) 打字稿
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.ts(7017) typescript
我正在创建输入 handleChange 但出现错误 元素隐式具有 'any' 类型,因为类型 'typeof globalThis' 没有索引 signature.ts(7017) 尝试更新状态时 (this.setState)。这是代码 snipet
const [first_name, setFname] = useState<string>();
const [last_name, setLname] = useState<string>();
const [email, setEmail] = useState<string>();
const [avatar, setAvatar] = useState();
const handleChange = (e:any) => {
const { name, value } = e.target;
this.setState({ [name]: value });
};
主要问题是:
this.setState({ [name]: value });
看起来代码应该在 class
组件中,但您只在功能组件(或其他挂钩)中使用挂钩,而不是 class
组件。对于功能组件和挂钩,您不使用中央 setState
方法,而是使用从 useState
获得的设置器。
此外,错误消息表明 TypeScript 代码在全局范围内,这很奇怪,因为您又没有在那里使用挂钩。
最后,TypeScript 应该抱怨你的 useState
调用,因为你使用 string
作为通用类型参数但没有提供任何初始值。初始值将默认为 undefined
,这不是字符串。
有点离题,但是错误具体说的是那个代码(typeof globalThis
)中this
的类型没有setState
属性 定义,因此 this.setState
隐式具有 any
类型,因为 TypeScript 没有它的类型信息。您将其用作函数,因此 TypeScript 警告您它没有任何信息告诉它 this.setState
是一个函数。
我正在创建输入 handleChange 但出现错误 元素隐式具有 'any' 类型,因为类型 'typeof globalThis' 没有索引 signature.ts(7017) 尝试更新状态时 (this.setState)。这是代码 snipet
const [first_name, setFname] = useState<string>();
const [last_name, setLname] = useState<string>();
const [email, setEmail] = useState<string>();
const [avatar, setAvatar] = useState();
const handleChange = (e:any) => {
const { name, value } = e.target;
this.setState({ [name]: value });
};
主要问题是:
this.setState({ [name]: value });
看起来代码应该在 class
组件中,但您只在功能组件(或其他挂钩)中使用挂钩,而不是 class
组件。对于功能组件和挂钩,您不使用中央 setState
方法,而是使用从 useState
获得的设置器。
此外,错误消息表明 TypeScript 代码在全局范围内,这很奇怪,因为您又没有在那里使用挂钩。
最后,TypeScript 应该抱怨你的 useState
调用,因为你使用 string
作为通用类型参数但没有提供任何初始值。初始值将默认为 undefined
,这不是字符串。
有点离题,但是错误具体说的是那个代码(typeof globalThis
)中this
的类型没有setState
属性 定义,因此 this.setState
隐式具有 any
类型,因为 TypeScript 没有它的类型信息。您将其用作函数,因此 TypeScript 警告您它没有任何信息告诉它 this.setState
是一个函数。