Przejdź do treści
TS2315

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    TS2315

    Typ nie jest generyczny

    Type 'Label' is not generic.

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

    Argumenty typu zostały przekazane do aliasu, który nie deklaruje parametrów typu.

    Odtworzenie

    type Label = string
    
    type Bad = Label<number>

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

    Dlaczego kompilator tak mówi

    Nawiasy kątowe tworzą instancję deklaracji generycznej. Stały alias taki jak `Label = string` nie ma czego podstawiać, więc `Label<number>` ma tyle sensu, co przekazanie argumentu do stałej.

    Naprawy

    1. 01
      type Label = string
      
      type NameLabel = Label

      Usuń argument typu, gdy alias celowo jest stały.

    2. 02
      type Label<T> = { value: T }
      
      type NumberLabel = Label<number>

      Zadeklaruj parametr, gdy alias ma się zmieniać wraz z wejściem.

    Wniosek

    To deklaracja rozstrzyga, czy typ jest generyczny; nawiasy kątowe w miejscu użycia nie mogą go takim uczynić.

    Dokąd dalej

    Błędy