Optioneel Chaining in TypeScript
In dit artikel leggen we uit over Optioneel Chaining in TypeScript.
YouTube Video
Optioneel Chaining in TypeScript
Optioneel chaining in TypeScript is een nuttige functie om toegang te krijgen tot eigenschappen van diep geneste objecten of arrays. Deze functie voorkomt fouten bij het benaderen van niet-bestaande eigenschappen, waardoor je beknopte en leesbare code kunt schrijven.
Wat is Optioneel Chaining?
De operator voor optioneel chaining (?.
) retourneert undefined
bij toegang tot een objecteigenschap of methode die niet bestaat. Dit zorgt ervoor dat de code blijft draaien zonder een fout te geven als de eigenschap niet bestaat.
Bijvoorbeeld, bij toegang tot eigenschappen van een genest object zoals hieronder weergegeven, treedt een fout op als de eigenschap niet bestaat met de gebruikelijke methode.
Voorbeeld
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Alice'
11};
12
13// Normal access
14console.log(user.address.postalCode); // Error: Cannot read property 'postalCode' of undefined
- In dit geval zal er een fout optreden als
address
niet bestaat. Optioneel chaining kan worden gebruikt om dit te voorkomen.
Voorbeeld met optionele chaining
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Alice'
11};
12
13console.log(user.address?.postalCode); // undefined
- Het gebruik van optioneel chaining voorkomt fouten en retourneert in plaats daarvan
undefined
als eigenschappen niet bestaan.
Hoe Optioneel Chaining te Gebruiken
Optioneel chaining kan in verschillende scenario's worden gebruikt, zoals toegangs tot eigenschappen, het aanroepen van functies en toegang tot arrays. We leggen uit hoe je elk van deze kunt gebruiken.
Toegang tot Eigenschappen
Je kunt veilig toegang krijgen tot geneste eigenschappen van objecten.
1interface Company {
2 name: string;
3 location?: {
4 city?: string;
5 country?: string;
6 };
7}
8
9const company: Company = {
10 name: 'Tech Corp',
11 location: {
12 city: 'New York'
13 }
14};
15
16console.log(company.location?.city); // 'New York'
17console.log(company.location?.country); // undefined
Deze code gebruikt optionele chaining om toegang te krijgen tot de eigenschappen city
en country
alleen als de eigenschap location
bestaat op het company
object.
Functieaanroepen
Optioneel chaining kan ook controleren of een functie bestaat voordat deze wordt aangeroepen.
1interface User {
2 name?: string;
3 greet?: () => void;
4}
5
6const user: User = {
7 name: 'Bob',
8 // greet is undefined
9};
10
11// Check if the function exists before calling it
12user.greet?.(); // The call is not made, and no error occurs
Deze code gebruikt optionele chaining om de functie greet
veilig aan te roepen, maar alleen als deze bestaat. Er treedt geen fout op, zelfs niet als de functie niet is gedefinieerd.
Toegang tot Arrays
Optioneel chaining kan worden toegepast op arrays om te controleren of elementen bestaan.
1interface Team {
2 members?: string[];
3}
4
5const team: Team = {
6 members: ['Alice', 'Bob', 'Charlie']
7};
8
9console.log(team.members?.[0]); // 'Alice'
10console.log(team.members?.[5]); // undefined
Deze code benadert array-elementen alleen als team.members
bestaat, en retourneert de waarde voor bestaande indexen en undefined
voor niet-bestaande indexen.
Optionele chaining en de nullish coalescing-operator
Optioneel chaining retourneert undefined
, maar soms is dit niet voldoende. In dit geval kan de nullish coalescing-operator (??
), geïntroduceerd in TypeScript 3.7, worden gebruikt om standaardwaarden toe te passen voor null
of undefined
.
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Carol'
11};
12
13// Use 'Unknown' as the default value if name does not exist
14const userName = user.name ?? 'Unknown';
15
16console.log(userName); // 'Carol'
Wanneer het wordt gecombineerd met optional chaining, kun je een nog flexibeler code schrijven.
1console.log(user.address?.postalCode ?? 'Not provided'); // 'Not provided'
Waarschuwingen bij het gebruik van Optional Chaining
Bij het gebruik van optionele chaining is het belangrijk om met de volgende punten rekening te houden:.
-
Onnodig gebruik van optionele chaining
- Het gebruik van optionele chaining op eigenschappen of methoden waarvan het bestaan gegarandeerd is, kan de code onnodig omslachtig maken. Het is het beste om het alleen te gebruiken wanneer het bestaan van het opgevraagde doel onzeker is.
-
Typografische fouten
- Overmatig gebruik van optionele chaining kan het moeilijker maken om typografische fouten te herkennen waardoor onbedoelde eigenschappen worden benaderd. Voer correcte typecontroles uit en gebruik het voorzichtig.
Samenvatting van de code
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Alice',
11 address: {
12 city: 'Tokyo'
13 }
14};
15
16// Example of optional chaining
17console.log(user.address?.city); // 'Tokyo'
18console.log(user.address?.postalCode); // undefined
19
20// Using optional chaining combined with nullish coalescing
21console.log(user.address?.postalCode ?? 'Not provided'); // 'Not provided'
Samenvatting
Optional chaining in TypeScript biedt beknopte code en voorkomt fouten bij toegang tot diep geneste objecten of arrays. Bovendien kun je, door het te combineren met de nullish coalescing-operator, standaardwaarden instellen en meer flexibele logica creëren. Bij juist gebruik kan het de veiligheid en leesbaarheid van de code aanzienlijk verbeteren.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.