Reactjs 什么';类型';是TypeScript中更改处理程序的事件吗?

Reactjs 什么';类型';是TypeScript中更改处理程序的事件吗?,reactjs,typescript,Reactjs,Typescript,我对TypeScript相当陌生,刚刚创建了一个ChangeHandler函数,将事件作为设置值的参数,即event.target.value。我目前已将其设置为任何,但我认为必须有一个正确的类型 这是我的方法,它位于功能性react组件中: const handleChange = (event: any) => { setValue(event.target.value); }; 基本DOM事件 基本DOM事件在名为的文件中定义。搜索“接口事件”,您将找到的类型 以下是摘录: /

我对TypeScript相当陌生,刚刚创建了一个ChangeHandler函数,将事件作为设置值的参数,即
event.target.value
。我目前已将其设置为任何,但我认为必须有一个正确的类型

这是我的方法,它位于功能性react组件中:

const handleChange = (event: any) => {
  setValue(event.target.value);
};
基本DOM事件 基本DOM事件在名为的文件中定义。搜索“接口事件”,您将找到的类型

以下是摘录:

/** An event which takes place in the DOM. */
interface Event {

/**
 * Returns the object to which event is dispatched (its target).
 */
readonly target: EventTarget | null;

// many, many more properties
}
正如您所看到的,这个接口将满足您的代码。但请注意,“target”可以为null,因此请在handleChange函数中注意这一点:

const handleChange = (event: Event) => {

  const target = event.target; // Event | null

  if (target === null) {
     throw new Error('target can not be null');
  }

  // targets type is now Event

  setValue(target.value); // target.value is of type EventTarget
};
反应事件 其他人认为你在使用react。在本例中,请查看。 您将发现一个名为“SyntheticEvent”的东西,它是“围绕浏览器的本机事件的跨浏览器包装器”

摘录:

interface BaseSyntheticEvent<E = object, C = any, T = any> {
    nativeEvent: E;
    currentTarget: C;
    target: T;
    
    // many more properties
}

interface SyntheticEvent<T = Element, E = Event> extends BaseSyntheticEvent<E, EventTarget & T, EventTarget> {}
接口事件{
国家事件:E;
当前目标:C;
目标:T;
//更多的财产
}
接口SyntheticEvent扩展BaseSyntheticEvent{}
这也满足了您的代码

了解更多信息。

基本DOM事件 基本DOM事件在名为的文件中定义。搜索“接口事件”,您将找到的类型

以下是摘录:

/** An event which takes place in the DOM. */
interface Event {

/**
 * Returns the object to which event is dispatched (its target).
 */
readonly target: EventTarget | null;

// many, many more properties
}
正如您所看到的,这个接口将满足您的代码。但请注意,“target”可以为null,因此请在handleChange函数中注意这一点:

const handleChange = (event: Event) => {

  const target = event.target; // Event | null

  if (target === null) {
     throw new Error('target can not be null');
  }

  // targets type is now Event

  setValue(target.value); // target.value is of type EventTarget
};
反应事件 其他人认为你在使用react。在本例中,请查看。 您将发现一个名为“SyntheticEvent”的东西,它是“围绕浏览器的本机事件的跨浏览器包装器”

摘录:

interface BaseSyntheticEvent<E = object, C = any, T = any> {
    nativeEvent: E;
    currentTarget: C;
    target: T;
    
    // many more properties
}

interface SyntheticEvent<T = Element, E = Event> extends BaseSyntheticEvent<E, EventTarget & T, EventTarget> {}
接口事件{
国家事件:E;
当前目标:C;
目标:T;
//更多的财产
}
接口SyntheticEvent扩展BaseSyntheticEvent{}
这也满足了您的代码


阅读更多信息。

如果使用
ChangeEvent
并提供您正在收听的元素类型,您可以避免额外的检查逻辑,以确保
target
currentTarget
null

例如:

const handleChange = ({
    currentTarget,
  }: ChangeEvent<HTMLInputElement>) => {
    const { name, value } = currentTarget;
const handleChange=({
当前目标,
}:ChangeEvent)=>{
常量{name,value}=currentTarget;

如果使用
ChangeEvent
并提供您正在侦听的元素类型,则可以避免额外的检查逻辑,以确保
target
currentTarget
null

例如:

const handleChange = ({
    currentTarget,
  }: ChangeEvent<HTMLInputElement>) => {
    const { name, value } = currentTarget;
const handleChange=({
当前目标,
}:ChangeEvent)=>{
常量{name,value}=currentTarget;

这取决于您是在侦听原始事件还是事件处理程序。如果您使用的是reactjs(看起来),则事件的类型可能是React.ChangeEvent。您还可以使用console.log(事件)并在其属性中查找该类型。是否使用React?是的,使用React当我控制台记录时,它说它是一个合成事件-尽管这不是一个有效的类型..这取决于您是在侦听原始事件还是一个事件处理程序。如果您使用的是React JS(看起来),则事件的类型可能是React.ChangeEvent。您还可以使用console.log(活动)并在其属性中查找该类型。是否使用React?是的,使用React当我控制台记录时,它说它是一个SyntheticEvent-虽然这不是一个有效的类型..构造良好的答案。我添加了接口,并使用BaseSyntheticEvent替换了代码示例中的任何类型。使用了一个符咒。构造良好的答案。我添加了接口在我的代码示例中,d使用BaseSynternalEvent来代替任何事件。使用了一个符咒。