// much better interface IGenericRequest { requestId: string; } interface IGetUserRequest extends IGenericRequest { username: string; } function isUserRequest(request: IGenericRequest): request is IGetUserRequest { const maybeUserRequest = request as IGetUserRequest; return maybeUserRequest.username && maybeUserRequest.username.length > 0; } function handler(request: IGenericRequest) { if (isUserRequest(request)) { const username = request.username; // ...the rest of the handler... } }