but that's not what I want, because I want the generic version to be guaranteed to have a T and the non-generic to never have a T.
The other option is to give the generic and non-generic classes different names, and inherit one from the other.
export interface ServiceResult1 {}; export interface ServiceResult2 extends