定义可观察量的响应类型的目的是什么?

时间:2018-01-25 15:22:16

标签: angular typescript observable

这三者有什么区别?有什么优势吗?

.subscribe((response: any) => {
                //do something
            });

.subscribe(response => {
                //do something
            });

.subscribe((response:boolean) => {
                //do something
            });

3 个答案:

答案 0 :(得分:4)

添加类型可让您和其他阅读代码的人更好地了解他们正在使用的内容。它还允许您的代码进行静态分析,以便您可以获得即时帮助。 HTML input via API实际上不会允许上面的第二个选项,因为你应该真正输入内容。第一个选项不会为您提供有关您的响应的信息。它几乎可以是任何东西。当您回到组件并且不记得响应中的内容时,这没有用。第三个选项是提供信息 - 它使得阅读和重构代码变得更加容易。以下是有关类型及其帮助原因的更多信息:https://basarat.gitbooks.io/typescript/docs/why-typescript.html

答案 1 :(得分:2)

键入参数可强制执行类型完整性。然而,在这种情况下,它并没有做太多。像这样的二阶函数应该已经通过类型泛型隐式输入其参数:

let obx = new Observable<boolean>(observer => {
  observer.next(true);
  observer.next(false);
  observer.complete();
}

obx.subscribe(res => {
  if(res) { doStuff(); } // res is implicitly boolean here
  let fail = res.wontWork ; // Typescript error: property 'wontWork' does not exist on type boolean 
}

Angular允许很多机会通过其API将此参数键入为通用参数,例如: HttpClient

答案 2 :(得分:1)

上面说的是正确的。它还允许您强制执行类型检查。你可以在这里读更多关于它的内容: https://angular.io/guide/http#typechecking-the-response