Typescript pyplynoperateur

Skryf kettingfunksie-oproepe in Typescript

Tyd vir 'n nuwe operateur

As u die funksies van Typescript baie gebruik, het u miskien die begeerte gevoel om u kode beter uit te skryf as sommige funksies aan mekaar vasgeketting is. Hier is 'n voorbeeld van wat ek daarmee bedoel.

const scream = (s: string) => s + "!";
const quote = (s: string) => `"${s}"`;
cosnt toUpperCase = (s: string) => s.toUpperCase();

// The first function that executes is
// 'toUpperCase', whose results is proved
// to 'scream', which in turn returns to
// 'quote', which returns the final string
//
// "HELLO WORLD!"
const text = quote(scream(toUpperCase("Hello World")));

Die grootste probleem is dat u u verstandelike model van die hiërargie van funksie-oproepe moet aanpas volgens die spesifikasie van Typescript. Spesifiek, elke funksie neem 'n ander funksie-retourwaarde as invoer, wat lei tot kode waar die oorspronklike invoerwaarde aan die regterkant geplaas word.

Dit is geensins 'n probleem nie. Die kode werk goed, en sodra u aan die sintaksis van 'n programmeertaal gewoond is, begin sulke konstruksies natuurlik voel.

Wat die pypleidingoperateur anders doen

Deur die nuwe en tans eksperimentele pyplynoperateur te gebruik, kan u met Typescript sulke oproepe van links na regs skryf, waar die oorspronklike invoer nou aan die linkerkant is.

const scream = (s: string) => s + "!";
const quote = (s: string) => `"${s}"`;
cosnt toUpperCase = (s: string) => s.toUpperCase();

// And here's the new sytanx, starting
// from left and movign throught the 
// call chain to the right.
// 
// It's immediately better to read and
// self explanatory, imho.
"Hello World" |> toUpperCase |> scream |> quote;

Die voorgestelde sintaksis is myns insiens baie beginnersvriendelik omdat dit meer soos menslike taal lees. En deur die geneste funksie-oproepe te vermy, is die algehele kodestyl skoner en leesbaarder.

Stap vir stap

Soos dit geskryf is, is dinge nog baie vroeg in ontwikkeling. Die voorgestelde funksie moet nie in enige soort produksiekode gebruik word nie, maar slegs vir 'n klein syprojek om mee rond te speel. Vir 'n vinnige begin ondersteun Firefox die sintaksis natuurlik nadat die funksievlag '--enable-pipeline-operator' ingestel is. Daar is ook 'n babel-invoegtoepassing beskikbaar.

Daar is nog 'n paar oop vrae, byvoorbeeld hoe om asink-funksie-oproepe in 'n ketting van funksies met die nuwe operateur te hanteer. Tog lyk hierdie funksie baie opwindend, alhoewel dit geen wesenlike nuwe funksies sal meebring nie. Die voorgestelde sintaksis lyk baie goed en ek is gretig om af te wag op die finale konsep deur die Typescript-span.