#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, вызывающей функцию). Извините за это.