class LoadingState extends State {} class ResultState extends State {} class ErrorState extends State {} const state: State = new LoadingState
But you can't reason on the different cases aided by the type checker.
Also, using classes or POJOs is merely an implementation detail.
reply