Как определить callback в Typescript и передать значение в виде функции по умолчанию
Есть метод:
setOverlayTimer(
overlay: boolean,
time = 1000,
callback = function() {}
): ReturnType<typeof setTimeout> {
return setTimeout(() => {
this.setVOverlay(overlay);
callback();
}, time);
}
При комплиции получаю ошибку:
error Unexpected empty function @typescript-eslint/no-empty-function
Пробовал сделать callback = () => {} и так callback: () => any. Возникают другие проблемы. TS начинает требовать 3 параметра. Как указать, чтот ожидается тип Function и передать по умочанию функцию, чтобы не вылетала ошибка TS2722: Cannot invoke an object which is possibly 'undefined'.?
UPD
TS 3.9.*
Ответы (2 шт):
По простому можно сделать так:
setOverlayTimer(
overlay: boolean,
time = 1000,
callback: () => any = () => undefined
): ReturnType<typeof setTimeout>
Можно явно указать тип возвращаемого занчения в callback:
setOverlayTimer(
overlay: boolean,
time = 1000,
callback: () => string = () => ''
): ReturnType<typeof setTimeout>
Можно указать, что callback не должен ничего возвращать:
setOverlayTimer(
overlay: boolean,
time = 1000,
callback: () => void = () => undefined
): ReturnType<typeof setTimeout>
А что не так с типом Function?
function setOverlayTimer(
overlay: boolean,
time: number = 1000,
callback: Function = function() {}
)
Ошибка Unexpected empty function возникает из-за отсутсвия некоторых настроек ESLint:
{ "allow": ["functions"] }
{ "allow": ["arrowFunctions"] }
{ "allow": ["generatorFunctions"] }
// и т.д.
Подробней здесь: ESLint no-empty-function