引用todo app of sitepoint tutorial如果我从TodoDataService
和addTodo
删除了返回类型deleteTodoById
,则该应用的功能相同。那么在TodoDataService
和addTodo
deleteTodoById
的重要性是什么
答案 0 :(得分:2)
从评论中得出,这里有两个问题:
- 为什么
醇>addTodo
和deleteTodoById
函数使用返回类型TodoDataService
进行注释,因为Typescript也是 如果没有提供他们会很高兴吗?
TypeScript相当聪明。它可以推断返回类型是TodoDataService
,假设两个函数的代码都返回TodoDataService
实例。如果你和我阅读代码,我们可以得出相同的结论。但是,显式地注释返回类型是告诉TypeScript返回类型必须为TodoDataService
的方式。
因此,在我们没有注释的情况下,删除return this
行完全没问题。请注意,TypeScript现在会推断返回类型为void
,因为我们不再返回值。
使用显式注释时,如果我们删除return this
行,TypeScript会抱怨。在这种情况下,我们已经告诉它必须返回TodoDataService
,但我们根本没有返回任何内容。
- 为什么属于
醇>addTodo
的{{1}}和deleteTodoById
函数都会返回TodoDataService
本身?
这是Method Chaining的一个例子。这里的基本想法是让代码看起来更清晰一些。例如,如果您想添加两个TodoDataService
并删除一个,则可以写:
Todo
使用方法链(即通过从函数返回服务),您可以改为:
todoDataService.addTodo(...);
todoDataService.addTodo(...);
todoDataService.deleteTodoById(...);
在您引用的教程中,没有todoDataService
.addTodo(...)
.addTodo(...);
.deleteTodoById(...);
行的原因。虽然我没有机会阅读文章的全部细节,但我无法看到任何方法链接实际上与return this
一起使用。