Ошибка TS2304 при вызове функции generi c внутри функции стрелки generi c - PullRequest
0 голосов
/ 24 марта 2020

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

function a<T>() { }
function b<T>() { a<T>() } // no errors
const c: <T>() => void = () => a<T>() // cannot find name T. ts(2304)

EDIT

Этот вопрос возник, когда я пытался написать обобщенную функцию стрелки c, аналогичную c в файле .tsx.

В этом случае все следующие синтаксисы вызывают ошибку.

const c: <T>() => void = <T>() => a<T>()
    //^ Type 'Element' is not assignable to type '<T>() => void'.
       // Type 'Element' provides no match for the signature '<T>(): void'.ts(2322)
const c = <T>() => a<T>() 
         //^ JSX element 'T' has no corresponding closing tag.ts(17008)

В итоге я решил использовать синтаксис обычной функции.

1 Ответ

1 голос
/ 24 марта 2020

Поскольку вы объявляете T в определении типа c. Вот как это должно выглядеть

const c: <T>() => void = <T>() => a<T>()
...