Эту проблему невероятно легко решить, просто заменив bar(): void
на bar: () => void
.
Пример:
interface FooProps {
bar: () => void;
}
export function foo(props: FooProps) {
const { bar } = props; // no lint error
return bar;
}
Мне всегда было интересно, почему члены с функциональным значением Интерфейс TypeScript имел два разных синтаксиса. Я всегда предполагал, что оба синтаксиса имеют одинаковое значение. Теперь я знаю лучше: синтаксис bar(): void
, по-видимому, означает «функцию-член класса», а bar: () => void
означает «свойство с функциональным значением, которое не использует this
».
Выход из пары вопросов и ответов вот так, чтобы следующая жертва не теряла полчаса, как я.