Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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; }

      undefined też 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 sobie null — usuwane jest tylko undefined.
    • Też nie jest głębokie. Symetria z Partial się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.