打字稿中的链接功能

Chaining functions in typescript

我有一些格式化函数应该应用于某些字符串:

const limitSize = (limit: number): ((str: string) => string) => {
  return (str: string) => str.substring(0, limit)
}

const replaceNewLine = (replaceWith: string): ((str: string) => string) => {
  return (str: string) => str.replace(/\n/g, replaceWith)
}

它们都是return可以应用于字符串的函数

如何将它们链接在一起,以便结果 return 也是一个可以应用于字符串的函数?

是否有我缺少的 lodash 实用程序?

我认为你需要 Ramdaflow function of Lodash or pipe

function square(n) {
  return n * n;
}
 
var addSquare = _.flow([_.add, square]);
addSquare(1, 2);
// => 9

只需创建一个新的函数定义如下:

const limitReplace = (limit: number, replaceWith: string): ((str: string) => string) => {
    return str => replaceNewLine(replaceWith)(limitSize(limit)(str));
}

用作:

const input = "Hel\nlo W\norld\n";
const limitSixReplaceSpace = limitReplace(6, " ");
const result = limitSixReplaceSpace(input); // Hel lo