Tajpila Dukta Funkciigisto

Skribu ĉenitajn alvokojn al tajpilo

Tempo por nova telefonisto

Se vi multe uzas la funkciojn de Typescript, vi eble sentis la deziron pli bone skribi vian kodon, kiam iuj funkcioj estas kunligitaj. Jen ekzemplo pri tio, kion mi celas per tio.

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")));

La ĉefa problemo estas, ke vi devas adapti vian mensan modelon de la hierarkio de funkciaj alvokoj al la specifo de Typescript. Specife, ĉiu funkcio prenas aliajn funkciojn redonas valoron kiel enigaĵon, kio rezultigas kodon, kie la originala eniga valoro lokiĝas ĉe la dekstra rando.

Ĉi tio tute ne estas problemo. La kodo funkcias bone, kaj post kiam vi kutimiĝis al sintakso de programlingvo, tiaj konstruaĵoj komencas senti sin naturaj.

Kion la duktofunkciigisto faras malsame

Uzante la novan kaj nun eksperimentan duktofunkciigiston, Typescript ebligas al vi skribi tiajn ĉenitajn funkcio-vokojn de maldekstre dekstren, kie la originala enigo nun estas ĉe la maldekstra rando.

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;

La proponita sintakso laŭ mi estas tre komencanta, ĉar ĝi legas pli kiel homa lingvo. Kaj evitante la nestitajn funkciovokojn, la kodstilo ĝenerale estas pli pura kaj pli legebla.

Paŝon post paŝo

Skribante, aferoj ankoraŭ tre frue disvolviĝas. La proponita funkcio ne estu uzata en ia produkta kodo, sed nur por iomete flanka projekto. Por rapida komenco, Fajrovulpo subtenas la sintakson denaske post agordi la trajtan flagon "--enable-pipeline-operator". Ankaŭ ekzistas babela kromaĵo havebla.

Estas ankoraŭ iuj malfermitaj demandoj, ekzemple kiel trakti asinkronajn alvokojn en ĉeno de funkcioj per la nova operatoro. Tamen ĉi tiu funkcio aspektas tre ekscita, kvankam ĝi ne alportos grandajn novajn funkciojn. La proponita sintakso aspektas vere bona kaj mi fervore atendas la finan projekton de la Tajposkripta teamo.