typescript - variable?: type og variable: type | undefined=undefined er likt i TS?


Min kollega er ikke enig med meg om det faktum at

variable?: type

og

variable: type | undefined = unedfined

er ekvivalente, derfor vil jeg finne ut sannheten. Hvordan ?: type fungerer under panseret?

Hva om

variable?: type

og

variable: type | undefined

Er de da ekvivalente?

Svar #1

De er ikke likeverdige.

type OptionalX = {x?: number}
type RequiredX = {x: number | undefined}

const opt: OptionalX = {}; // OK
const req: RequiredX = {}; // error

Lekeromlenke

Det sagt, det er verdt å nevne at spesielt i en klasse, er følgende like hvis du aktiverer useDefineForClassFields-flagget:

class OptionalX {
    x?: number;
}

class RequiredX {
    x: number | undefined = undefined;
}

Lekeromlenke

Dette er fordi når dette flagget er aktivert, er den genererte koden som class OptionalX { x; }, slik at feltet x blir erklært, og dets initialverdi vil være undefined siden det ikke har noen initialiserer.


Merk at ingen av disse avhenger av exactOptionalPropertyTypes-flagget. Dette flagget styrer bare om x?: number er ekvivalent med x?: number | undefined, hvor begge har ? som indikerer en valgfri egenskap.

Relaterte artikler