Парсинг результата в Angular 5+, как правильно?
Опишите Http Interceptor, который будет перехватывать ответ, проделывать манипуляции и отдавать уже в нужном вам формате. Примеры можно найти, загуглив: "angular 5 http interceptor response"
Когда будите работать над Http Interceptor, как посоветовал Ivan Stroykin, проработайте обработку ошибок как следует. Интерсептор не должен возвращать null в случае ошибки. Он должен делать return Observable.throw(error).
Еще одно общее наблюдение: старайтесь функции, не использующие this выносить в отдельный файл (не сервис). Т.е. делать как-то так:// get-data-response.ts
export function getDataResponse<T>(response: IResponse<T>) {
    if (response && response.data) {
      return response.data;
    } else {
      return null;
    }
  }
Так намного больше шансов на то что функция будет переиспользована где-то еще и не захламлена ненужными подробностями. Да и юнит-тестировать такой код гораздо проще.