提供一个界面:
interface MyProps {
onEvent: (name: string, data: any) => void;
}
在编译时如何使用该函数类型防止未使用的参数错误?
eventHandler = (name: string, data: any) => {
console.log(data);
}
因为当前我收到“名称”未使用参数的编译错误,但是我无法删除它,因为它会破坏基础类型的签名。
我希望做这样的事情,尽管显然这是行不通的!
eventHandler: MyProps.onEvent = (name, data) => {
console.log(data);
}
答案 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);
}