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

Relaterade artiklar