No método efetuaLogin você diz que não é possível fazer a conversão para .json após converter a resposta para uma promise, mas o código que você escreveu antes de fazer a alteração para o uso do .map funciona corretamente contanto que a url esteja no formato template string.
Minha dúvida é, essa operação pode ser feita das duas formas ou existe alguma restrição?
import { Usuario } from './usuario';
import { Http } from '@angular/http';
import { Injectable } from '@angular/core';
@Injectable()
export class usuarioService{
constructor(private _http: Http){ }
public efetuaLogin(email:string, senha:string){
let api = `https://aluracar.herokuapp.com/login?email=${email}&senha=${senha}`;
return this._http
.get(api)
.toPromise()
.then(res => res.json().usuario)
.then(dado => {
let usuario = new Usuario(dado.nome, dado.dataNascimento, dado.email, dado.telefone);
return usuario;
});
}
}