Guida

JavaScript to TypeScript Converter: dai PropTypes alle interfacce

Questo javascript to typescript converter ti risparmia il primo passaggio, il più noioso, di una migrazione. Legge il tuo codice con un parser, trasforma i PropTypes di React in interfacce, ricava i tipi dai valori predefiniti e aggiunge quelli che si possono dedurre, poi restituisce TypeScript formattato. Lavora su un file o un frammento alla volta, non esegue mai il tuo codice e non carica nulla.Quello che non può sapere lo lascia a te. Le sezioni qui sotto dicono esattamente che cosa.


Come usare il convertitore online, passo dopo passo

  1. Incolla il codice nel campo JavaScript o JSX. Finché non incolli nulla mostra «Incolla qui JavaScript o JSX…». Il limite è di 5.000.000 di caratteri.
  2. Aspetta un attimo. Lo strumento converte mentre scrivi o incolli, circa 0,35 secondi dopo l'ultima modifica, quindi non c'è nessun pulsante da premere.
  3. Leggi il risultato sotto il titolo «TypeScript», oppure «TypeScript (TSX)» quando il codice contiene JSX. È mostrato come codice evidenziato in sola lettura.
  4. Guarda le indicazioni sopra il codice. Dicono che cosa è stato fatto, per esempio «2 interfacce scritte» o «11 annotazioni di tipo aggiunte». Se nulla aveva bisogno di un tipo, la riga dice «Qui niente aveva bisogno di un tipo, quindi il codice è stato solo riformattato.»
  5. Premi Copia negli appunti. Il pulsante cambia in «Copiato».
  6. Sotto il codice, Opzioni di conversione contiene due caselle, Modalità React e Modalità strict. Se ne cambi una, il codice viene convertito di nuovo.

Se il testo non è JavaScript valido, vedi «Questo non è JavaScript valido: errore di sintassi alla riga N, colonna M.», con la riga incriminata e un segno sotto. Il codice che contiene già sintassi TypeScript conta come non valido. Lo strumento lavora sul codice che incolli, quindi va bene per un componente, un modulo o un frammento, non per un intero repository.

Un esempio: un componente React con PropTypes

L'input è un piccolo contatore con PropTypes e un gestore di eventi senza tipo. Il convertitore scrive l'interfaccia CounterProps: label è obbligatoria per via di isRequired, mentre start e onChange sono facoltative. Il valore predefinito n = 1 diventa n: number = 1, e il gestore onClick su un button dà a e il tipo React.MouseEvent per l'elemento pulsante. L'import inutilizzato di prop-types scompare e Prettier distribuisce il JSX su più righe. In tutto lo strumento segnala 1 interfaccia scritta e 3 annotazioni di tipo aggiunte.

Quello che non cambia: useState(start) resta com'è, perché il convertitore non indovina un tipo da come viene usato un valore.

React prop types TypeScript: come diventano un'interfaccia

Con la modalità React attiva, il convertitore scrive un'interfaccia chiamata NomeProps a partire dai PropTypes del componente, la mette sopra il componente e tipizza le props con essa. Funziona con i componenti funzione (dichiarazioni, funzioni freccia e quelli avvolti in memo) e con le classi che hanno un propTypes statico o un'assegnazione Foo.propTypes = {...}. Una prop con .isRequired è obbligatoria, ogni altra riceve un ?. I commenti sopra una prop passano nell'interfaccia.

L'istruzione propTypes viene rimossa, come l'import di prop-types se nient'altro lo usa. Un componente classe riceve anche un'interfaccia di stato da this.state = {...}. Una classe senza PropTypes riceve un'interfaccia delle props costruita dai this.props.x che legge. Un componente funzione senza PropTypes la riceve solo in modalità strict.

Da JSX a TSX: i tipi aggiunti senza PropTypes

Per passare da JSX a TSX basta incollare il componente: quando il codice contiene JSX il risultato è intitolato «TypeScript (TSX)». La modalità strict è disattivata di default. Attivala per vedere tutte le lacune: scrive un any esplicito dove non si può ricavare un tipo. let x; diventa let x: any;, const list = [] diventa any[] e i parametri senza tipo ricevono : any. Senza la modalità strict quei punti restano senza tipo. Con essa, l'elenco di ciò che resta da sistemare è facile da cercare.

Cosa lascia stare, commenti e privacy

Legge un pezzo di codice e non indovina nulla. Questi casi restano come sono o diventano any:

Il risultato è un primo passaggio, non una migrazione finita. Incollalo nel tuo progetto, esegui tsc e stringi ogni any a mano. Il convertitore non rinomina i file, quindi salva tu il componente come .tsx.

Commenti e formattazione si conservano: il codice è letto con @babel/parser, ogni annotazione è inserita nel tuo testo originale come modifica, poi Prettier riformatta il risultato mantenendo le tue virgolette, i punti e virgola e il rientro. Tutto avviene in un Web Worker nel tuo browser e il tuo codice non viene mai caricato né eseguito. Per sistemare il codice prima di passarlo, usa Formattatore di Codice. Per capire prima uno script minificato o offuscato, usa Deoffuscatore JS.


Domande frequenti

Come uso un javascript to typescript converter online?

Incolla il tuo JavaScript o JSX nel campo «JavaScript o JSX». Circa un terzo di secondo dopo, il TypeScript compare sotto il titolo «TypeScript», oppure «TypeScript (TSX)» se il codice contiene JSX. Non c'è un pulsante di conversione. Con «Copia negli appunti» prendi il risultato.

Come ottengo un'interfaccia dai PropTypes React in TypeScript?

Con la modalità React attiva, ogni oggetto propTypes diventa un'interfaccia che prende il nome del componente, per esempio CounterProps. Una prop con isRequired è obbligatoria e le altre ricevono un punto interrogativo. L'istruzione propTypes viene rimossa, come l'import di prop-types se nient'altro nel file lo usa. Funziona con i componenti funzione e con le classi che hanno un propTypes statico.

Come passo da JSX a TSX?

Incolla il componente JSX. Quando il codice contiene JSX, il risultato è intitolato «TypeScript (TSX)» e la modalità React si attiva da sola, quindi le props ricevono un'interfaccia e i gestori ricevono tipi di evento. Lo strumento non rinomina i file: salva il risultato nel tuo progetto con l'estensione .tsx.

Cosa fanno la modalità React e la modalità strict?

La modalità React, sotto «Opzioni di conversione», trasforma i PropTypes in interfacce e tipizza gestori di eventi, props e hook. È attiva di default quando il codice ha JSX, react o prop-types; se la disattivi, i PropTypes restano come sono. La modalità strict è disattivata di default e scrive un any esplicito dove non si può ricavare un tipo, invece di ometterlo.

Perché nel risultato c'è ancora any?

Un tipo viene scritto solo se si può leggere nel codice stesso. Un validatore PropTypes personalizzato o un tipo importato da un altro file diventa any, e la modalità strict aggiunge un any esplicito a variabili e parametri senza tipo. Il risultato è un primo passaggio. Eseguilo con tsc e sostituisci gli any con i tipi veri.

Perché il parametro di una callback non è stato tipizzato?

Un parametro passato direttamente a una chiamata, come x in items.map((x) => x.id), viene lasciato com'è di proposito, così TypeScript può ancora tipizzarlo dalla funzione che riceve la callback.

Conserva i miei commenti e la formattazione?

I commenti restano, perché le annotazioni sono inserite nel tuo codice originale come modifiche di testo invece di ricostruirlo. Poi passa Prettier, che mantiene le tue virgolette, i punti e virgola e il rientro, ma può riandare a capo le righe lunghe. I commenti sopra una voce di PropTypes passano nella proprietà corrispondente dell'interfaccia.

Il mio codice viene caricato o eseguito?

No. Il codice viene analizzato e riscritto nel tuo browser, in un Web Worker, e non viene mai inviato a un server. Non viene nemmeno eseguito. Se c'è un errore di sintassi, vedi il messaggio con riga e colonna. Il limite è di 5.000.000 di caratteri.

Consigliati

Aiuta a mantenere gratuiti gli strumenti. ✨

Le immagini sono solo a scopo illustrativo. In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei.