Kształty obiektów
Required
Usuwa ? z każdej właściwości, na jednym poziomie.
Czym jest
Lustro Partial, zapisane przez -?. Minus to cały mechanizm: modyfikatory w typie mapowanym można dodawać przez +? i usuwać przez -?, a Required to standardowa biblioteka używająca drugiego. Zdejmuje też undefined z typu właściwości, co jest osobnym efektem, którego rzadko się oczekuje.
Przykłady
Required<{ a?: string; b?: number }>→{ a: string; b: number; }Required<{ a?: string | undefined }>→{ a: string; }undefinedteż znika —-?usuwa je z typu, nie tylko?z klucza.Required<{ a: string }>→{ a: string; }
Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.
Czego nie robi
- Nie czyni właściwości nie-nullową.
Required<{ a?: string | null }>wciąż ma w sobienull— usuwane jest tylkoundefined. - Też nie jest głębokie. Symetria z
Partialsięga aż po ograniczenie.
Wniosek
-? robi dwie rzeczy naraz: usuwa opcjonalność i usuwa undefined. Większość zamieszania wokół Required to ta druga, przychodząca bez zapowiedzi.

