ExpertiDict

TypeScript · Intermediário · Português · Técnico

generic em arquivo tsx

/dʒeˈnɛɾik ĩ aɾˈkivu tiˈɛsi ˈiksi/substantivo

Em arquivos .tsx, arrow functions genéricas como <T>(x: T) => x são lidas como tag JSX. Escreva <T,> ou <T extends unknown> para o parser entender o parâmetro de tipo.

Onde usar

Aparece em hooks e componentes React que são arrow functions genéricas e quebram com erro de parsing JSX. Em arquivos .ts o problema não existe.

Em código

// em um arquivo .tsx:
const id = <T,>(x: T) => x;
const id2 = <T extends unknown>(x: T) => x;
function id3<T>(x: T) { return x; } // ok

Exemplos

Em arquivo tsx, a arrow genérica precisa da vírgula depois do T.

O erro sumiu quando troquei por <T extends unknown>.

Cuidado

Não é bug do compilador: declarações com function funcionam normalmente, e a vírgula depois do T é só um desambiguador.

Veja também

Todos os termos de TypeScript