Untyped function calls may not accept type arguments - Angular 5 http calls

nishil bhave picture nishil bhave · Jan 12, 2018 · Viewed 12.8k times · Source

I'm trying to fetch data from API using interface. Bellow is my temp interface

export interface ITemp {
    id: number,
    name: string,
    age:  number
}

And below is my HTTP service, where there is a fn getHomedetails, which calls an API.

import {Injectable} from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ITemp } from "../interfaces/temp";
import { Observable } from "rxjs/Observable";
import 'rxjs/Rx';

@Injectable()
export class HttpService{

    http:any;
    baseUrl: String;

    constructor(http:HttpClient){
        this.http = http;
        this.baseUrl = 'some_url';
    }

    getHomeDetails(): Observable<ITemp>  {
        return this.http.get<ITemp>(this.baseUrl); //problem is here 
        //when mouse is pointed on get<ITemp> it shows "Untyped function calls may not accept type arguments"

    }

}

An interface doesn't get defined. I don't know what I'm doing wrong. And the above syntax is an angular 4.3X syntax. The editor which I've used are the sublime and visual studio.

Answer

UncleDave picture UncleDave · Jan 12, 2018

This is because you're giving your class-level http a type of any:

Change http:any; to http: HttpClient

A good rule of thumb is to not use any unless you really really have to.