Получить последний аргумент функции в машинописи
Я пытаюсь деструктурировать аргументы функции, которая заботится только о последнем переданном параметре, привязывая его значение к переменной next
; Следующее работает нормально в простой JS, узел 10:
> function f(...{length, [length - 1]: next}) { console.log(next) }
> f(1,2,3,4)
4
Однако та же самая конструкция в машинописи дает мне:
error TS2501: A rest element cannot contain a binding pattern.
function (...{length, [length - 1]: next}) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Как я могу это исправить?
1 ответ
Довольно интересный вопрос, потому что в основном утверждение "TS - это суперсет JS" здесь не работает.
Оказывается, что когда мы пытаемся использовать шаблон привязки в операторе деструкции и распространения одновременно, мы получим ошибку:
В настоящее время в файле диагностических сообщений TS есть явная ошибка для A_rest_element_cannot_contain_a_binding_pattern_2501
Также есть открытый запрос на извлечение и в репозитории TypeScript, который, вероятно, решит эту "проблему" (не уверен, что это проблема или что-то еще).
Но вы всегда можете выбрать этот подход для вашей задачи:
function f(...args) {
console.log(args[args.length - 1]);
}