Я хочу установить функцию в результат тернарного оператора (который возвращает одну из двух функций), а затем вызвать результат. Мой код выглядит так:
const bar = (x: number) => {
// do something
}
const foo = (x: number) => {
// do something else
}
const my_function = condition ? bar : foo;
my_function(x)
но я получаю ошибку типа, что my_function не является функцией. Почему это не работает, и как я могу заставить это работать? Мне приходится вызывать эту функцию много раз, поэтому я хочу сделать это так, а не просто вызывать условно.
Когда вы наводите курсор на my_function
, ваш редактор говорит, что это переменная?
тип ((x) => void)
тип исходной функциональной панели (x) => void - без дополнительного набора скобок, может быть, это что-то?
Вы получаете эту ошибку во время выполнения или во время компиляции? Вы отметили этот вопрос тегом React.js. Это имеет какое-то отношение к этому?
Ответ @ m-s7 работает. Тем не менее, это как-то грязно.
ИМХО лучше зафиксировать что-то вроде этого в производстве:
const bar = (x: number) => {
// do something
}
const foo = (x: number) => {
// do something else
}
const my_function = (x: number) => condition ? bar(x) : foo(x)
Здесь вы создаете функцию, в которую вы передаете аргумент и возвращаете результат из правильной функции на основе условия. Это довольно чисто и легко понять с первого взгляда.
спасибо это сработало! Думаю, это было что-то странное с проверкой типов.