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

问题描述 投票:1回答:3

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

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

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

.subscribe((response:boolean) => {
                //do something
            });
angular typescript observable
3个回答
4
投票

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


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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.