Przejdź do treści
TS2351

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    TS2351

    Wyrażenia nie można skonstruować

    This expression is not constructable.

    Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.

    Wartość po `new` nie ma sygnatury konstruktora, więc nie może utworzyć instancji.

    Odtworzenie

    const value = {}
    
    new value()

    Build potwierdza, że to emituje dokładnie ten kod.

    Dlaczego kompilator tak mówi

    `new` wymaga klasy lub funkcji konstruktora, której typ opisuje tworzoną instancję. Zwykły obiekt już jest wartością; nie jest przepisem na tworzenie kolejnej.

    Naprawy

    1. 01
      class Value {
        readonly ok = true
      }
      
      const value = new Value()

      Użyj klasy, gdy wywołujący mają tworzyć odrębne instancje.

    2. 02
      const makeValue = () => ({ ok: true })
      
      const value = makeValue()

      Użyj fabryki bez `new`, gdy wystarczy zwykły obiekt.

    Wniosek

    Sygnatura konstruktora opisuje, co może zrobić `new`. Gdy typ jej nie ma, zaimportowano złą wartość albo `new` nie powinno tam być.

    Dokąd dalej

    Błędy