在sitepoint教程中的Todo CRUD app中的addTodo和deleteTodoById方法中返回TodoService有什么意义

时间:2017-09-04 18:34:42

标签: angular

引用todo app of sitepoint tutorial如果我从TodoDataServiceaddTodo删除了返回类型deleteTodoById,则该应用的功能相同。那么在TodoDataServiceaddTodo

中使用返回类型为deleteTodoById的重要性是什么

1 个答案:

答案 0 :(得分:2)

从评论中得出,这里有两个问题:

  
      
  1. 为什么addTododeleteTodoById函数使用返回类型TodoDataService进行注释,因为Typescript也是   如果没有提供他们会很高兴吗?
  2.   

TypeScript相当聪明。它可以推断返回类型是TodoDataService,假设两个函数的代码都返回TodoDataService实例。如果你和我阅读代码,我们可以得出相同的结论。但是,显式地注释返回类型是告诉TypeScript返回类型必须TodoDataService的方式。

因此,在我们没有注释的情况下,删除return this行完全没问题。请注意,TypeScript现在会推断返回类型为void,因为我们不再返回值。

使用显式注释时,如果我们删除return this行,TypeScript会抱怨。在这种情况下,我们已经告诉它必须返回TodoDataService ,但我们根本没有返回任何内容。

  
      
  1. 为什么属于addTodo的{​​{1}}和deleteTodoById函数都会返回TodoDataService本身?
  2.   

这是Method Chaining的一个例子。这里的基本想法是让代码看起来更清晰一些。例如,如果您想添加两个TodoDataService并删除一个,则可以写:

Todo

使用方法链(即通过从函数返回服务),您可以改为:

todoDataService.addTodo(...);
todoDataService.addTodo(...);
todoDataService.deleteTodoById(...);

在您引用的教程中,没有todoDataService .addTodo(...) .addTodo(...); .deleteTodoById(...); 行的原因。虽然我没有机会阅读文章的全部细节,但我无法看到任何方法链接实际上与return this一起使用。