Typescript Angular2 - 抱怨缺少类型

时间:2016-03-21 05:13:53

标签: javascript typescript angular

我有以下代码:

  var headers = new Headers();
                            // headers.append('Content-Type', 'application/json');
                            headers.append('Content-Type', 'application/x-www-form-urlencoded');
                            this.http.post(
                                'http://192.168.1.45:3000/testrestapi',
                                {headers: headers}
                            ).map((res => res.json())
        .subscribe(data => {
          // we've got back the raw data, now generate the core schedule data
          // and save the data for later reference
          this.data = data;
      console.log('Friends Provider was a success!');
      console.log(JSON.stringify(data));
          resolve(this.data);
        },
    (err)=>{
        console.log('Error in Friends Provider!');
    },
    ()=>{
           console.log('Friends Provider network call has ended!');
    }
        )

       )
   });

代码编译没有错误,但我的ide中出现以下错误:

enter image description here

我正在关注此文档:https://angular.io/docs/js/latest/api/http/Http-class.html。它显示了如何将HTTP用于GET,但不用于POST。似乎我错过了我的标题的类型,我不知道该放在这里,它抱怨订阅方法的类型,再次我不知道该放什么,因为我遵循文档,它似乎没有有什么不同吗?

3 个答案:

答案 0 :(得分:1)

您已在代码的第2行和第3行导入Http模块2次,其中一行是冗余的。

http post的API是:

post(url: string, body: string, options?: RequestOptionsArgs) : Observable<Response>
https://angular.io/api/http/Http

中的

它期望一个JSON.stringified正文作为第二个参数,但你推动的标题选项应该是第三个参数。

我也建议使用

headers.set('Content-Type', 'application/json'); 

而不是append

此外,您在数据之后缺少订阅中的paranthesis。

.subscribe(
    (data) => {
        console.log('Do something with data here \n',data);
    }
);

答案 1 :(得分:0)

 var headers = new Headers();
                            // headers.append('Content-Type', 'application/json');
       headers.append('Content-Type', 'application/x-www-form-urlencoded');
       this.http.post(
                       'http://192.168.1.45:3000/testrestapi',
                                {headers: headers}
                      )
        .map((res => res.json())
        .subscribe(data => 
         {

          this.data = data;
          console.log('Friends Provider was a success!');
          console.log(JSON.stringify(data));
          //resolve(this.data);
          },
        (err)=>{
        console.log('Error in Friends Provider!');
        },
        ()=>{
           console.log('Friends Provider network call has ended!');
        }

       );

答案 2 :(得分:0)

  

代码编译正常,没有错误,

仅仅因为你获得了有效的JavaScript 并不意味着它编译时没有错误。这实际上是TypeScript 功能(请参阅why typescript)。

您在错误中看到的错误是编译器错误