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
- 01
type User = { id: string } const user: User = { id: 'u1' }
Użyj aliasu w pozycji typu i osobno dostarcz prawdziwą wartość.
- 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ć.
