В качестве простого объяснения: если вы используете () => void
в качестве типа обратного вызова, то это означает, что вы просто не ожидаете возвращаемого значения.
Вы просто хотите выполнить функцию, которая не имеет аргументов.
Итак, поскольку вы также можете обычно вызывать функции, которые возвращают что-то , а затем просто игнорировать возвращаемое значение, из этого следует, что любая функция, которая возвращает что-то, может использоваться вместо функции, помеченной как возвращающая void
.
Это может удивить с точки зрения других языков, где возвращаемый тип имеет значение для компиляции. Однако учтите, что TypeScript укореняется в JavaScript, и там функция, возвращающая «ничто» (function f() { return; }
), фактически все равно возвращает undefined
. Таким образом, все JS функции возвращают что-то, с этой точки зрения.
Вот аналогичное объяснение непосредственно из TypeScript FAQ :
Другой способ думать о том, что тип обратного вызова, возвращающий пустоту, говорит: «Я не собираюсь смотреть на ваше возвращаемое значение, если оно существует».
Итак, void
означает «нет ограничений на возвращаемый тип "здесь.
Если вы хотите вместо запретить любой возвращаемый тип, тогда используйте () => undefined
, то есть минимальный тип, который будет возвращен в любом случае, даже void
функция.