TypeScript İşlem Hattı Operatörü

Typescript'te zincirleme işlev çağrıları yazın

Yeni bir operatör zamanı

Typescript'in işlevlerini çok kullanıyorsanız, bazı işlevler birbirine zincirlendiğinde kodunuzu daha iyi yazma arzusunu hissetmiş olabilirsiniz. İşte bununla ne demek istediğimin bir örneği.

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

Asıl sorun, işlev çağrılarının hiyerarşisine ilişkin zihinsel modelinizi TypeScript'in belirtimine uyarlamanız gerektiğidir. Spesifik olarak, her işlev giriş olarak başka bir işlevin dönüş değerini alır, bu da orijinal giriş değerinin sağ kenara yerleştirildiği kodla sonuçlanır.

Bu hiçbir şekilde bir sorun değil. Kod gayet iyi çalışıyor ve bir programlama dilinin sözdizimine alıştığınızda, bu tür yapılar doğal gelmeye başlıyor.

Boru hattı operatörünün farklı yaptığı şey

Typescript, yeni ve şu anda deneysel işlem hattı operatörünü kullanarak, bu tür zincirleme işlev çağrılarını, orijinal girdinin artık sol kenarda olduğu soldan sağa yazmanıza olanak tanır.

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;

Önerilen sözdizimi, bence daha çok insan dili gibi okunduğu için yeni başlayanlar için çok uygun. Ve iç içe işlev çağrılarından kaçınarak, genel olarak kod stili daha temiz ve daha okunabilir.

Adım adım

Yazarken, işler hala çok erken gelişme aşamasındadır. Önerilen özellik, herhangi bir üretim kodunda kullanılmamalı, sadece üzerinde çalışılacak küçük bir yan proje için kullanılmalıdır. Hızlı bir başlangıç için Firefox, "--enable-pipeline-operator" özellik bayrağını ayarladıktan sonra sözdizimini yerel olarak destekler. Ayrıca bir babel eklentisi de mevcut.

Hala bazı açık sorular var, örneğin yeni operatörü kullanarak bir işlevler zincirinde zaman uyumsuz işlev çağrılarının nasıl ele alınacağı. Yine de bu özellik, herhangi bir önemli yeni özellik getirmese de çok heyecan verici görünüyor. Önerilen sözdizimi gerçekten iyi görünüyor ve TypeScript ekibinin son taslağını beklemek için sabırsızlanıyorum.