Hoe Om de Overgang van Uw Web Applicatie te TypeScript

0
30

Typoscript voegt statische typering te JavaScript, waardoor de IDE ervaring en vermindert fouten. Het is gemakkelijk te leren, maar de overgang van een bestaande applicatie aan de Schrijfmachine kan een moeizaam proces zijn. We bespreken een aantal van de technieken voor het werken met het in uw app.

Wat Is De Schrijfmachine?

De schrijfmachine is een syntactische superset van JavaScript ondersteuning toegevoegd voor statische typen, onder andere dingen. Het stelt direct naar vanilla JS die zal draaien in elke browser.

Vanilla JS is dynamisch ingevoerd. Variabelen kunnen veranderen types at-runtime, en JS zal accepteren. Dit maakt het zeer flexibele, maar leidt vaak tot een puinhoop in grotere projecten. Typoscript dwingt type veiligheid—je kunt niet slagen in een int-waarde aan een functie die een string.

Dit alleen al heeft enkele grote voordelen. Omdat elke functie definieert duidelijk wat argumenten die zij nemen, dat maakt het werken met hen veel gemakkelijker. Typoscript integreert goed met IDE gereedschap, die rijke automatisch aanvullen en controleren van het type waar vanilla JS zou alleen de basic-syntaxis accentuering.

Het maakt ook basic bug controle makkelijker voor je IDE te doen. Als je mist een argument voor een functie, VS Code zal u laten weten meteen, voordat het is zelfs samengesteld.

Het installeren van de Schrijfmachine en Webpack

Een opmerking voordat we beginnen: als u een Reageren project gebouwd met create-reageren-app, de Webpack config wordt behandeld als onderdeel van reageren-scripts. Als u wilt om het te wijzigen, kunt u uitwerpen uw config (niet aanbevolen, tenzij u de verdere configuratie van jezelf), vork reageren-scripts, of gebruik maken van een bibliotheek als een andere bedrading te wijzigen indirect zonder te breken updates.

Echter, als je een nieuw project starten, kunt u gewoon gebruik maken-reageren-app Typoscript sjabloon bij het genereren van een nieuw project.

npx maken-reageren-app –typoscript sjabloon

Deze worden vooraf geconfigureerd voor de ondersteuning van de Schrijfmachine uit de doos. Als dit voor u werkt, kunt u de rest van deze sectie. U kunt ook de overgang van een bestaand project te maken-reageren-app Typoscript sjabloon met behulp van deze methode.

Als u niet Reageert, zult u hebben om deze handmatig te installeren. Installeer de Schrijfmachine als een ontwikkeling van de afhankelijkheden voor uw project:

npm install –opslaan-dev typescript

U zult ook willen installeren Typoscript wereldwijd op uw apparaat, die u zal toestaan om het gebruik van de CLI:

npm installeren -g typescript

Om het uit te testen, kunt u een basic-functie, zoals de volgende:

function Hallo(object: string) {
console.log(`Hallo, ${object}!`);
}

Hallo(‘Wereld’)

Opgeslagen als test.ts. Alle Typoscript bestanden moeten hebben .ts-uitbreiding (of .tsx voor JSX). U kunt het compileren handmatig met behulp van tsc:

tsc-test.ts

Uitgevoerd met de-w vlag zal tsc kijken voor nieuwe veranderingen en bouwen wanneer u besparen, maar wilt u waarschijnlijk om het te integreren in Webpack als onderdeel van uw bouwproces. Als u geen Webpack, installeren van npm:

npm install –opslaan-dev webpack webpack-cli

Maak een Schrijfmachine configuratie bestand op standaarden houdt.json die zal opslaan van uw compiler instellingen:

{
“compilerOptions”: {
“outDir”: “./dist/”,
“sourceMap”: true,
“skipLibCheck”: true,
“noImplicitAny”: true,
“module”: “commonjs”,
“target”: “es6”,
“jsx”: “reageren”
}
}

Vervolgens zult u wilt maken of wijzigen van uw webpack.config.json-bestand te lossen Typoscript extensies en gebruiken ts-loader. U zult ook willen om de beurt op source kaarten voor een betere opsporing.

de module.export = {
modus: de “productie”,

// Inschakelen sourcemaps voor het debuggen van de webpack-uitvoer.
devtool: “bron-kaart”,

oplossen: {
// Add ‘.ts’ en ‘.tsx’, zoals omgezet in uitbreidingen.
extensies: [“.ts”, “.tsx”]
},

module: {
regels: [
{
test: /.ts(x?)$/,
exclusief: /node_modules/,
gebruik: [
{
loader: “ts-loader”
}
]
},
// Alle output ‘.js’ bestanden zal hebben sourcemaps opnieuw verwerkt door de ‘bron-kaart-loader’.
{
af te dwingen: “pre”,
test: /.js$/,
loader: “bron-kaart-loader”
}
]
},

// Bij het importeren van een module waarvan het pad overeenkomt met een van de volgende, op slechts
// stel een corresponderende globale variabele bestaat en die te gebruiken in plaats daarvan.
// Dit is belangrijk omdat het ons in staat stelt om te voorkomen dat de bundeling van al onze
// afhankelijkheden, die kunnen browsers cache die bibliotheken tussen bouwt.
externen: {
“reageren”: “Reageren”,
“reageer-dom”: “ReactDOM”
}
};

Nu, uitvoeren van npx webpack of webpack-dev-server zal automatisch verwerken van het laden van de Schrijfmachine dossiers voor u.

Hoe Te Werken Met JS op Basis Pakketten

Als je net hebt geïnstalleerd Typoscript, gewijzigd sommige van uw extensies .ts, en we hebben gemerkt dat alles is nu op het vuur, maak je geen zorgen. Van vele JS-bibliotheken geen steun voor de Schrijfmachine uit de doos, maar van een derde partij types zijn meestal verkrijgbaar bij de DefinitelyTyped, een gemeenschap repository gewijd aan het behoud van typeringen voor de meest voorkomende bibliotheken afzonderlijk te installeren npm afhankelijkheden. Bijvoorbeeld, Reageren is beschikbaar via @types/reageren:

npm install –opslaan-dev @types/reageren @soorten/reageer-dom

Dit zal onmiddellijk ontdoen van de problemen bij het gebruik van het bijbehorende pakket. Als je aan de compiler fouten nadat u een nieuw pakket installeert, installeert @soorten/pakket.

Gelukkig, TypeScript nog compileren en te werken met native JS gewoon fijn is dat je kan zien wat rode kriebels vertelt u het een probleem is. Als je echt wilt oplossen typeringen voor een npm-pakket dat niet publiekelijk beschikbare typen, kunt u schrijven een verklaring bestand voor het, desgewenst door forking DefinitelyTyped (en het indienen van uw nieuwe typeringen van de gemeenschap repo).

Een verklaring bestand ziet er als volgt uit, meestal opgeslagen als pakket.d.ts ergens in uw src:

exporteren als naamruimte Pakket
export = Pakket

verklaren naamruimte Package {
interface Type {
waarde: boolean
}
// enz…
}

Dan kunt u gebruik maken van de verklaring door het toevoegen van een verwijzing op de top van een code met behulp van het pakket:

///<verwijzing path=”pakket.d.ts”/>

Hoe Legacy Code

Het typen van legacy code is een handmatig proces dat zal worden specifiek voor uw business logica, dus het zal enige tijd duren, afhankelijk van uw project grootte. Echter, het concept is niet te hard, en het gewoon gaat om het creëren van aangepaste interfaces voor waarden doorgegeven en die door de functies die u hebt geïmplementeerd.

Bijvoorbeeld, stel dat u een Reageren onderdeel dat duurt een paar rekwisieten, en maakt dat sommige JSX:

Om dit te typen, kunt u een nieuwe interface voor de functie te gebruiken. Elke keer dat u verwijst naar een toets op de rekwisieten in de code, zoals rekwisieten.divCustomColor hier, voeg het toe aan de interface, samen met het overeenkomstige type.

Wanneer u vervolgens gebruik maken van deze functie in een ander bestand, krijgt u een foutbericht als u het niet definiëren rekwisieten.divCustomColor, of probeer langs een onjuist type. Als je de app al verwerkt waarden in een type-veilige manier, die misschien alles wat u nodig hebt om te typen veel van uw andere componenten. Echter, je kan hebben om te “tweaken” sommige dingen beter met strikte typen.

Als je echt je hoofd krabben over iets, u kunt altijd up-en uitschakelen van de Schrijfmachine compiler waarschuwingen het gebruik van de ts-negeren vlag:

//@ts-negeren

Of de ts-geencontrole voor een gehele bestand.

Het Toevoegen Van Project-Breed Soorten

Als u wilt toevoegen van custom types (aangepaste soorten project-breed, zult u wilt maken van een globale verklaring bestand. Bijvoorbeeld, als u wilt maken een referenceable enum het opslaan van uw app ‘ s kleuren, zodat u ze direct gebruiken door de naam, kunt u het volgende als wereldwijd.d.ts in uw src map:

verklaren global {
enum Kleur {
primary = “#6ca583”,
accent = “#9b8dab”,
}
}

export {};

Uitschakelen Impliciet Enige Moeite Als Je Echt Problemen hebt

De meest voorkomende fout die je waarschijnlijk zult tegenkomen is de Schrijfmachine klagen over “Impliciet Enige.” U kunt functies accepteren van elk type gebruik van de expliciet aanwezig, of val: geen. Dit is prima, en terwijl u dient meestal te maken met meer strikte typeringen, het is soms beter om te vertellen Typoscript om te ontspannen.

Standaard worden alle waarden impliciet hebben een type, dat is gewoon de standaard JavaScript dynamische typen systeem. Typoscript klagen over dit veel. Als u wilt, kunt u deze uitschakelen van de klagende door het instellen van noImplicitAny in op false:

{
“compilerOptions”: {
“noImplicitAny”: false
}
}

Wees voorzichtig met dit alsof dit alleen stiltes in de fout, en niet oplossen door de kern van het probleem. Echter, als u wilt om deze tijdelijk terwijl u aan het typen van alles uit, dit zal uw code te compileren in de tussentijd.