Почему Typescript выдает ошибку преобразования при попытке выполнить операцию, используя результат функции?

#typescript #type-conversion

#typescript #преобразование типов

Вопрос:

Я пытаюсь понять, почему Typescript выдает ошибку преобразования типа n, когда я использую результаты функции как часть арифметической операции.

Это, вероятно, иллюстрирует то, что я пытаюсь сказать.

 let foo = ():number => 5
let bar = ():number => 2
let operation = ():number => foo/bar; // The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
  
 let baz = foo()
let qux = bar()
let otherOperation = ():number => baz/qux; // no compilation errors
  

Поскольку оба foo и bar возвращают тип number , я бы предположил, что их значения могут быть использованы как часть арифметической операции. Почему это не так? И как это исправить?

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

1. Запустите этот код в консоли вашего браузера…

Ответ №1:

Это не ошибка.

foo и bar — это функции, которые возвращают число. Сами по себе они не являются числами.

foo/bar не компилируется, потому что у него не может быть числового значения! Это было бы похоже, скажем, на деление квадратного корня на логарифм. Не имеет смысла выполнять арифметические вычисления над самими функциями.

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

1. Полный мозговой пердеж (т. е. использование функции x, вызывающей функцию). Извините за это.