Przejdź do treści
webtype.orgRequired

    ↑↓ 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 5.9.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.