Как «использовать» тип функции, определенный в интерфейсе

#typescript

#typescript

Вопрос:

Учитывая интерфейс:

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

Как я могу использовать этот тип функции, чтобы предотвратить ошибки неиспользуемых параметров при компиляции?

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

Поскольку в настоящее время я получаю ошибку компиляции неиспользуемого параметра для «name», но я не могу его удалить, потому что это нарушило бы сигнатуру базового типа.

Я надеялся сделать что-то подобное, хотя, очевидно, это не работает!

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

Комментарии:

1. Используете ли вы noUnusedParameters в tsconfig? Кроме этого, TypeScript не заботится об этом..

2. Не удается получить доступ, MyProps.onEvent поскольку MyProps это тип, но не пространство имен. Вы имели в виду получить тип свойства onEvent в MyProps с MyProps["onEvent"] помощью?

Ответ №1:

У вас просто немного неправильный синтаксис, который вам нужно использовать ['name'] . Это называется запросом индексированного типа

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

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