Hur man sätter en variabel om den är odefinierad i TypeScript?
Jag försöker sätta variabelvärdet när det är odefinierat, men jag får ett fel när jag försöker använda vanlig JavaScript-metod.
Block-skopad variabel 'x' användes innan den deklarerades.
Vad är det bästa tillvägagångssättet när man använder TypeScript för att sätta en odefinierad variabel?
let x = (typeof x === 'undefined') ? def_val : x;
Svar #1
Den logiska nullish-tilldelningsoperatorn (x ??= y) tilldelar endast om x är nullish (null eller undefined).
x ??= default_value
Svar #2
TypeScript kan se att x definitivt inte är definierad, eftersom det är en block-skopad variabel och du kan se hela blocket.
Om du vet bättre än kompilatorn kan du separera raderna:
const def_val = 'default';
let x: string;
x = (typeof x === 'undefined') ? def_val : x;
Men du kanske vill överväga hur den blockscopade variabeln möjligen kan vara odefinierad i ditt fall (kanske är din kod inte riktigt så enkel som exemplet i din fråga).
Det vanliga användningsfallet skulle vara mer som:
const def_val = 'default';
function work(y: string) {
let x = (typeof y === 'undefined') ? def_val : y;
}
Du kan också lägga till strängare kompilatoralternativ för att göra det mindre sannolikt att värdet blir odefinierat i många fall.
Stenografi
Det finns också en kortformad falsk-sammanslagning som kan vara användbar:
const def_val = 'default';
function work(y: string) {
let x = y || def_val;
}
Detta kommer att ersätta undefined, null, 0 (noll) eller '' med standardvärdet.
Svar #3
Det finns ännu en förkortning som använder Nullish coalescing operator:
const def_val = 'default';
function work(y: string) {
let x = y ?? def_val;
}
Detta kommer endast att ersätta undefined eller null med standardvärdet.
https://developer.mozilla.org/sv/docs/Web/JavaScript/Referens/Operatorer/Nullish_coalescing_operator
