【问题标题】:Java Method reference operator(double colon) equivalent in typescript打字稿中等效的Java方法引用运算符(双冒号)
【发布时间】:2019-05-17 18:57:05
【问题描述】:

打字稿中Java双冒号运算符的等价物是什么(如果有的话):

stream.forEach( System.out::println(s));

编辑: 我知道它适用于某些功能,例如:

stream.forEach(console.log);
stream.filter(Boolean);

但是当我使用其他功能时,例如BehaviorSubject“下一个”我的代码中断。我不知道有什么资格让其他两个被引用调用。我想要类似的东西:

stream.pipe(someSubject.next);

代替:

stream.pipe(value => someSubject.next(value));

【问题讨论】:

    标签: typescript rxjs


    【解决方案1】:

    好的,所以我做了一些搜索,在 JScript 中有一个双冒号运算符,这是微软对 JavaScript 的实现:

    使用双冒号作为脚本 ID 和事件名称之间的分隔符

    我的猜测是这不是 Internet Explorer 的 ECMAScript 实现的一部分(或不再是一部分),但它属于(或曾经属于)Microsoft Office 的实现

    What does ‘::’ (double colon) do in javascript for events?

    这是一个非常酷的发现,但我从未见过在 TS 或 ECMAScript 中使用双冒号运算符。 您可以使用 lambda 表达式 [].forEach((item: any) => console.log(item))

    但我很确定 JS 或 TS 没有像 Java 那样的 lambda 表达式包装器。

    编辑:经过一番搜索后,我还发现了这个What does ‘::’ (double colon) do in JavaScript?,它也是一个有效的 ES7 运算符作为绑定的语法糖:http://blog.jeremyfairbank.com/javascript/javascript-es7-function-bind-syntax/

    虽然它的行为方式与 Java 的 :: 运算符不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      相关资源
      最近更新 更多