以下语法有什么区别?

时间:2019-08-28 05:48:20

标签: angular8

您好,我是新手,所以每问一个基本问题。这个问题听起来有些奇怪,请清除我的疑问。

#1 :我正在用角度进行http调用,遇到了Observable,发现下面的2种语法在通过组件调用时给出相同的结果

如您所见,首先我已将类型定义为Observable并从rxjs导入了Observable,而在第二个中,它无需任何类型声明或导入即可正常工作

#2 我需要知道两者都只是语法不同吗?还是两者都是不同的?

Service.ts

import {Injectable} from "@angular/core";
import {HttpClient} from "@angular/common/http"
import { Observable } from 'rxjs';
@Injectable({
    providedIn : "root"
})

export class ObservableService{
    constructor(private http : HttpClient){}

    getEmployeeDetail(id) : Observable<any>{            
        return this.http.get("http://dummy.restapiexample.com/api/v1/employee/"+id);        
    }
}

Service.ts

import {Injectable} from "@angular/core";
import {HttpClient} from "@angular/common/http"
@Injectable({
    providedIn : "root"
})

export class ObservableService{
    constructor(private http : HttpClient){}

    getEmployeeDetail(id){            
        return this.http.get("http://dummy.restapiexample.com/api/v1/employee/"+id);        
    }
}

1 个答案:

答案 0 :(得分:1)

它们的功能完全相同,实际上两者都将返回一个Observable,但是在第一种情况下,您显式声明了该方法的返回类型,而在第二种情况下,则不是。

这实际上是由于打字稿引起的,而不是角度的。检查文档here

当您未明确声明返回类型时,打字稿不会抱怨的原因是由于类型推断。对此here的解释相当不错,如下所示:

  

函数返回类型

     

返回类型由return语句推断出,例如推断出以下函数以返回数字。

     

function add(a: number, b: number) { return a + b; }

     

这是类型自底向下流动的示例。

相关问题