Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 定义可观测响应类型的目的是什么?_Angular_Typescript_Observable - Fatal编程技术网

Angular 定义可观测响应类型的目的是什么?

Angular 定义可观测响应类型的目的是什么?,angular,typescript,observable,Angular,Typescript,Observable,三者之间有什么区别?有什么优势吗 .subscribe((response: any) => { //do something }); .subscribe(response => { //do something }); .subscribe((response:boolean) => { //do something

三者之间有什么区别?有什么优势吗

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

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

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

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

添加类型可以让您和其他阅读您的代码的人更好地了解他们正在使用的代码。它还允许对代码进行静态分析,以便获得即时帮助
TSLint
实际上不允许上面的第二个选项,因为您应该真正键入内容。第一个选项不提供关于您的响应是什么的信息。它可以是任何东西。当您回到组件并且不记得响应中的内容时,这是没有帮助的。第三个选项的信息量最大——它使阅读和重构代码变得更容易。以下是有关类型及其帮助原因的详细信息:

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

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 
}
让obx=新的可观察对象(observer=>{
观察者:下一个(正确);
观察者:下一个(假);
observer.complete();
}
obx.subscribe(res=>{
如果(res){doStuff();}//res在这里是隐式布尔值
let fail=res.wontWork;//类型脚本错误:布尔类型上不存在属性“wontWork”
}

Angular允许许多机会通过其API将此参数作为泛型键入,例如,
HttpClient

键入参数强制执行类型完整性。但是,在这种情况下,它做的不多。像这样的二阶函数应该已经通过类型泛型隐式键入了其参数:

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 
}
让obx=新的可观察对象(observer=>{
观察者:下一个(正确);
观察者:下一个(假);
observer.complete();
}
obx.subscribe(res=>{
如果(res){doStuff();}//res在这里是隐式布尔值
let fail=res.wontWork;//类型脚本错误:布尔类型上不存在属性“wontWork”
}

Angular允许许多机会通过其API将此参数作为泛型键入,例如
HttpClient

上面所说的是正确的。它还允许您强制执行类型检查。您可以在此处阅读有关它的更多信息:

上面所说的是正确的。它还允许您强制执行类型检查。您可以在此处阅读有关它的更多信息: