如何“使用”在接口中定义的功能类型

时间:2019-03-29 09:02:48

标签: typescript

提供一个界面:

interface MyProps {
  onEvent: (name: string, data: any) => void;
}

在编译时如何使用该函数类型防止未使用的参数错误?

eventHandler = (name: string, data: any) => {
  console.log(data);
}

因为当前我收到“名称”未使用参数的编译错误,但是我无法删除它,因为它会破坏基础类型的签名。

我希望做这样的事情,尽管显然这是行不通的!

eventHandler: MyProps.onEvent = (name, data) => {
  console.log(data);
}

2 个答案:

答案 0 :(得分:1)

您使用的语法有点错误,您需要使用['name']。这称为indexed type query

interface MyProps {
    onEvent: (name: string, data: any) => void;
}

let eventHandler: MyProps['onEvent'] = (name, data) => {
    console.log(data);
}

答案 1 :(得分:0)

interface MyProps {
  onEvent: (name: string, data: any) => void;
}

此接口使用onEvent函数定义对象。

您尝试使用类似MyProps.onEvent的类型,但打字稿不允许这样做。

或者使用type定义。 可能看起来像这样

type SomeEvent = (name: string, data: any) => void;

并像这样使用它

eventHandler: SomeEvent = (name, data) => {
  console.log(data);
}