Modulelessen (1/2)
Configuratie met tsconfig.json
Het bestand tsconfig.json specificeert de hoofdmap van een TypeScript-project en de compileropties die nodig zijn om het project te bouwen.
Telkens wanneer u tsc in een projectmap uitvoert, zoekt de compiler naar dit bestand om het compilatiegedrag te begeleiden.
Structuur van een tsconfig.json bestand
Een typisch configuratiebestand ziet er als volgt uit:
{
"compilerOptions": {
"target": "es2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}De belangrijkste eigenschappen zijn:
compilerOptions: Instellingen voor de compiler.include: specificeert de bestanden of mappen die moeten worden gecompileerd.exclude: specificeert de bestanden of mappen die tijdens het compileren moeten worden genegeerd.
Belangrijkste compileropties
Hier zijn enkele van de belangrijkste instellingen die u moet kennen:
target: Specificeert de versie van JavaScript-uitvoer door de compiler (bijvoorbeeldes5,es6/es2015,es2020,esnext).module: Specificeert het modulesysteem dat in de gecompileerde code wordt gebruikt (bijvoorbeeldcommonjs,esnext,node16).strict: Maakt een breed scala aan rigoureuze typecontroles mogelijk. Het wordt ten zeerste aanbevolen om dit in te stellen optruevoor maximale typeveiligheid. Het maakt opties mogelijk zoals:noImplicitAny: geeft een foutmelding bij expressies en declaraties met een impliciet typeanywanneer er geen typeannotatie is opgegeven.strictNullChecks: Voorkomt het toewijzen vannullofundefinedaan typen die deze niet expliciet in hun vereniging opnemen.
Probeer het zelf
Oefening 1: omgaan met strictNullChecks
Onder de optie strictNullChecks: true in tsconfig.json kunnen we geen nul of ongedefinieerd toewijzen aan primitieve typen. Declareer een functie met de naam parseAge die invoer van het type string | accepteert null en retourneert een getal als de invoer niet nul is en een geldig geheel getal is, anders retourneert deze 0. Behandel expliciet het nulgeval om een strikte compilatie door te laten.
Toon hint
Controleer of de invoer nul is aan het begin van de functie en retourneer 0 onmiddellijk voordat de string wordt verwerkt.
Oplossing beschikbaar na 3 pogingen
Oefening 2: Strikt typen zonder impliciet
Onder noImplicitAny: true moet elke parameter waarvan het type niet kan worden afgeleid, expliciet worden getypt. Maak een functie met de naam processItems die array-items (reeks getallen) accepteert en een callback-functie die één enkel getal als argument neemt en niets retourneert. Zorg ervoor dat u geen enkele gebruikt en typ alles expliciet.
Toon hint
Declareer de functie met de handtekeningfunctie processItems(items: number[], callback: (item: number) => void): void.
Oplossing beschikbaar na 3 pogingen