Typescript 元素隐式地具有一个';任何';因为类型';globalThis'的类型;没有索引签名。ts(7017)类型脚本

Typescript 元素隐式地具有一个';任何';因为类型';globalThis'的类型;没有索引签名。ts(7017)类型脚本,typescript,ionic-react,Typescript,Ionic React,我正在创建一个输入handleChange,但是获取一个错误元素隐式地具有“any”类型,因为类型“typeof globalThis”在尝试更新状态(this.setState)时没有索引签名.ts(7017)。这是代码snipet const[first_name,setFname]=useState(); const[last_name,setLname]=useState(); const[email,setEmail]=useState(); const[avatar,setAvat

我正在创建一个输入handleChange,但是获取一个错误元素隐式地具有“any”类型,因为类型“typeof globalThis”在尝试更新状态(this.setState)时没有索引签名.ts(7017)。这是代码snipet

const[first_name,setFname]=useState();
const[last_name,setLname]=useState();
const[email,setEmail]=useState();
const[avatar,setAvatar]=useState();
常量handleChange=(e:any)=>{
常量{name,value}=e.target;
this.setState({[name]:value});

};主要问题是:

this.setState({[name]:value});
这看起来像是要放在
组件中的代码,但您只在功能组件(或其他挂钩)中使用挂钩,而不是
组件。对于功能组件和挂钩,您不需要使用中央
setState
方法,而是使用从
useState
获得的setter

此外,错误消息表明代码的类型脚本位于全局范围内,这很奇怪,因为这里没有使用钩子

最后,TypeScript应该抱怨您的
useState
调用,因为您使用了
string
作为泛型类型参数,但没有提供任何初始值。初始值将默认为
未定义
,它不是字符串



这有点相切,但错误具体地说是,该代码中的
this
类型(
typeof globalThis
)没有定义
setState
属性,因此
this.setState
隐式包含
any
类型,因为TypeScript没有类型信息。您将其用作函数,因此TypeScript警告您,它没有任何东西告诉您
this.setState
是函数。

从错误消息中,似乎此代码处于全局范围。。。?但是钩子用于组件内部,而不是全局范围。您能否为您正在做什么以及在何处/如何运行此代码提供更多的上下文?