typescript - variable?: type og variable: type | undefined=undefined er likt i TS?
Min kollega er ikke enig med meg om det faktum at
variable?: typeog
variable: type | undefined = unedfineder ekvivalente, derfor vil jeg finne ut sannheten. Hvordan ?: type fungerer under panseret?
Hva om
variable?: typeog
variable: type | undefinedEr 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.
