Przejdź do treści
TS2749

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    TS2749

    Wartość użyta jako typ

    'widget' refers to a value, but is being used as a type here. Did you mean 'typeof widget'?

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

    Zmienna czasu działania została zapisana w przestrzeni typów; użyj `typeof`, aby pobrać typ tej wartości.

    Odtworzenie

    const widget = { id: 1 }
    
    type Copy = widget

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

    Dlaczego kompilator tak mówi

    Nazwy nie przechodzą automatycznie z przestrzeni wartości do przestrzeni typów. Typowa forma `typeof` jest jawnym mostem: prosi kontroler o uchwycenie statycznego typu istniejącej wartości bez uruchamiania operatora JavaScript.

    Naprawy

    1. 01
      const widget = { id: 1 }
      
      type Copy = typeof widget

      Użyj zapytania o typ, gdy wartość ma być źródłem prawdy.

    2. 02
      type Widget = { id: number }
      
      const widget: Widget = { id: 1 }

      Najpierw zadeklaruj typ, gdy kontrakt ma rządzić wieloma wartościami.

    Wniosek

    W pozycji typu używaj `typeof wartość`; sama nazwa wartości pozostaje wyrażeniem czasu działania.

    Dokąd dalej

    Błędy