新版的 Rxjs 对订阅参数(Subscribe Arguments)做了一个调整。原先 subscribe() 可以传入多个参数,现在它只允许以 options 的形式传入一个参数。
import { throwError } from 'rxjs';
// deprecated
throwError('I am an error').subscribe(null, console.error);
// suggested change
throwError('I am an error').subscribe({error: console.error});
这让我想到了函数柯里化,但这两者想达到的目的不同。函数柯里化是函数式编程的基础,用以保证函数链式调用的单一职能原则。而这个将参数从 ...args 的形式改为 键值对 的目的是增强参数的语义化以及降低项目的维护难度。
这个其实很好理解,我们反过来想。如果参数从 options 变成 arg1, arg2... 我们会失去