Há algum tempo foi proposto ao tc39, o comitê que participa da evolução do JavaScript, o pipeline operator. Essa feature, fortemente inspirada em linguagens como Elixir e F#, introduz o novo operador |>.

Para que possamos entender como este operador mudará a estética do código que escrevemos hoje, nada melhor do que um exemplo com e sem o uso do pipeline operator. Aliás, aproveitarei o mesmo exemplo do artigo “Compondo funções em JavaScript” publicado por este mesmo autor:

const trim = text => text.trim();
const toUpperCase = text => text.toUpperCase();
const split = separator => text => text.split(separator);

const word = ' Calopsita do Agreste ';

// sem o pipeline operator
const words = 
  split(' ')( 
    toUpperCase(
      trim(word)
    )
  );

console.log(words); // ['CALOPSITA', 'DO', 'AGRESTE']

Temos o encadeamento das funções split, toUpperCase e trim para processar a string ' Calopsita do Agreste '.

Pipeline operator em ação

Agora, vejamos as mesmas operações, dessa vez com o pipeline operator:

const trim = text => text.trim();
const toUpperCase = text => text.toUpperCase();
const split = separator => text => text.split(separator);
const word = ' Calopsita do Agreste '

// com o pipeline operator
const words =  word 
  |> trim 
  |> toUpperCase 
  |> split(' ');
  
console.log(words); // ['CALOPSITA', 'DO', 'AGRESTE']

Agora, fica bem claro para quem esta lendo que a primeira transformação a ser realizada é através da função trim e assim por diante.

Como utilizar o pipeline operator hoje

Para quem não deseja esperar o trâmite padrão da proposta no tc39 e já deseja ter um gostinho do pipeline operador pode lançar mão do babel-plugin-transform-pipeline, um plugin do Babel. Todavia esse autor teve dificuldades em fazê-lo funcionar, pois uma atualização do babylon, o parser JavaScript do Babel, quebrou recentemente o plugin.

Conclusão

O pipeline operator, ainda em estágio embrionário, promete melhorar a manutenção e a legibilidade de um código escrito principalmente no paradigma funcional. E você? Utilizaria esse operador? Deixe sua opinião.