【问题标题】:How to pass a generic type into an object property callback function [duplicate]如何将泛型类型传递给对象属性回调函数[重复]
【发布时间】:2022-02-10 21:19:41
【问题描述】:

我正在尝试将泛型类型传递给回调 lambda 函数

interface Interface { 
   onChange: <T = string>(val: T) => void 
}

const handleOnChange = (val: MY_ENUM) => {...}

const myConfig: Interface[] = [{
    onChange: <MY_ENUM>(val) => handleOnChange(val);
}]

上面的代码不起作用。

【问题讨论】:

  • 试试this例子
  • 谢谢,成功了。
  • 我不知道为什么在提供泛型后必须加逗号。
  • 这是因为 TS 需要 jsx 语法。使用逗号,TS 知道您正在编写泛型

标签: typescript


【解决方案1】:
interface Interface {
  onChange: <T = string>(val: T) => void
}

const handleOnChange = <T,>(val: T) => { }

const myConfig: Interface[] = [{
  onChange: handleOnChange
}]

在传递泛型时,您必须在配置函数的开头添加一个逗号
谢谢, @船长约塞连

【讨论】:

  • 你不必使用逗号,一个简单的T extends any 也可以。
  • 顺便说一句,看看this PR,就可以写onChange: handleOnChange&lt;number&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
相关资源
最近更新 更多