Przejdź do treści
TS2693

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    TS2693

    Typ użyty jako wartość czasu działania

    'User' only refers to a type, but is being used as a value here.

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

    Alias typu został użyty w przestrzeni wartości, ale aliasy są usuwane z emitowanego JavaScriptu.

    Odtworzenie

    type User = { id: string }
    
    const Ctor = User

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

    Dlaczego kompilator tak mówi

    TypeScript ma równoległe przestrzenie typów i wartości. Deklaracje `type` i `interface` istnieją tylko podczas sprawdzania; uruchamiany kod potrzebuje klasy, funkcji, obiektu lub innej prawdziwej wartości JavaScript.

    Naprawy

    1. 01
      type User = { id: string }
      
      const user: User = { id: 'u1' }

      Użyj aliasu w pozycji typu i osobno dostarcz prawdziwą wartość.

    2. 02
      class User {
        constructor(readonly id: string) {}
      }
      
      const user = new User('u1')

      Użyj klasy, gdy jedna nazwa ma opisywać instancje i konstruktor czasu działania.

    Wniosek

    Zapytaj, czy bieżąca pozycja przetrwa do JavaScriptu. Jeśli tak, deklaracja istniejąca tylko jako typ nie może jej wypełnić.

    Dokąd dalej

    Błędy