`truthy` og `falsy` i TypeScript
I denne artikel forklarer vi truthy
og falsy
i TypeScript.
YouTube Video
truthy
og falsy
i TypeScript
Begreberne truthy
og falsy
i TypeScript spiller en meget vigtig rolle i programmeringens betingelsesudtryk. Her forklarer vi disse begreber i detaljer, og hvordan de faktisk bliver brugt. Derudover giver vi konkrete eksempler på TypeScript-kode for at forstå, hvordan truthy
- og falsy
-værdier håndteres.
Hvad er truthy
og falsy
?
I JavaScript og TypeScript vurderes enhver værdi som enten sand (true
) eller falsk (false
) i et betingelsesudtryk. Disse værdier klassificeres logisk som truthy
eller falsy
.
truthy
refererer til værdier, der evalueres somtrue
i betingede udtryk.falsy
refererer til værdier, der evalueres somfalse
i betingede udtryk.
I TypeScript behandles følgende værdier som falsy
:.
- Tallet
0
""
(tom streng)
Alle andre værdier behandles som truthy
.
Specifikke eksempler på truthy
og falsy
1// Examples of falsy values
2console.log("0 is", Boolean(0) ? "truthy" : "falsy");
3console.log('"" is', Boolean("") ? "truthy" : "falsy");
4console.log("null is", Boolean(null) ? "truthy" : "falsy");
5console.log("undefined is", Boolean(undefined) ? "truthy" : "falsy");
6console.log("NaN is", Boolean(NaN) ? "truthy" : "falsy");
7
8// Examples of truthy values
9console.log("1 is", Boolean(1) ? "truthy" : "falsy");
10console.log('"hello" is', Boolean("hello") ? "truthy" : "falsy");
11console.log("[] is", Boolean([]) ? "truthy" : "falsy");
12console.log('" " (space) is', Boolean(" ") ? "truthy" : "falsy");
Betingelser ved brug af truthy
og falsy
Begreberne truthy
og falsy
bruges ofte i betingelser og løkker. For eksempel kan du i if
-sætninger eller while
-løkker bruge disse værdier direkte til simple betingelsesevalueringer.
1// Checking if the length of the array is 0
2let items: string[] = [];
3
4if (items.length) {
5 console.log("The array is not empty");
6} else {
7 console.log("The array is empty");
8}
9
10// Checking if the input value is empty
11let input = "";
12
13if (input) {
14 console.log("Input has value");
15} else {
16 console.log("Input is empty"); // This will be executed
17}
Håndtering af falsy
værdier med ??
(Nullish Coalescing) og ||
(Logisk ELLER)
I TypeScript er der adskillige operatorer, der er nyttige, når man arbejder med falsy
værdier. Specifikt bruges Nullish Coalescing Operator (??
) og den logiske ELLER-operator (||
) ofte.
||
(Logisk ELLER)
Den logiske ELLER-operator bruges til at erstatte falsy
værdier med en standardværdi. Dog målrettes alle falsy
-værdier (ikke kun null
eller undefined
, men også 0
, ""
osv.).
1let username = "";
2let displayName = username || "Guest"; // Since username is empty, "Guest" is assigned
3
4console.log(displayName); // "Guest"
??
(Nullish Coalescing)
Nullish Coalescing Operator anvender kun en standardværdi på null
eller undefined
, mens andre falsy
værdier (som 0
eller ""
) forbliver uændrede.
1let username2 = "";
2let displayName2 = username2 ?? "Guest";
3// The empty string is retained
4// since username2 is not null or undefined
5
6console.log(displayName2); // ""
Faldgruber relateret til truthy
og falsy
En vigtig ting at være opmærksom på ved forståelse af truthy
og falsy
er, at utilsigtede værdier kan behandles som falsy
. For eksempel er 0
og tomme strenge ""
gyldige værdier, men de betragtes som falsy
i betingede udtryk, hvilket kan resultere i forkerte evalueringer.
1let score = 0;
2
3if (score) {
4 console.log("You have a score!"); // This will not be executed
5} else {
6 console.log("No score available"); // This will be executed
7}
I sådanne tilfælde muliggør brugen af strenge sammenligningsoperatorer præcis skelnen mellem værdier som 0
og false
.
1let score = 0;
2
3if (score === 0) {
4 console.log("Score is zero"); // Correctly evaluated
5}
Udfordringer relateret til falsy
og NaN
NaN
kræver særlig håndtering, da det ikke er lig med nogen værdi, heller ikke sig selv, når der bruges sammenligningsoperatorer.
1console.log("NaN === NaN:", NaN === NaN); // false
Derfor er det mere sikkert at bruge Number.isNaN()
til præcist at opdage NaN
.
1// Bad Example
2let value = parseInt("0");
3if (!value) {
4 console.log("Value is NaN"); // Incorrectly treats 0 as NaN
5}
6
7// Good Example
8let value2 = parseInt("hello");
9if (Number.isNaN(value2)) {
10 console.log("Value is NaN"); // Correctly identifies NaN
11}
Som sådan er NaN
ikke engang lig med sig selv, så sammenligninger med NaN
returnerer altid false
. Ved at bruge Number.isNaN()
i stedet kan du udføre mere pålidelige kontroller.
Konklusion
Konceptet med truthy
og falsy
i TypeScript er meget praktisk, men du skal være opmærksom på visse værdier, især 0
og tomme strenge. Når du bruger disse værdier i betingede kontrol, kan brugen af streng sammenligning (===
) eller Nullish Coalescing Operator (??
) i stedet for løs sammenligning (==
) hjælpe med at undgå uventet adfærd.
Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.