26

[تجربة] بعد إستخدامي typescript في مشروعي الأخير

السلام عليكم ورحمة الله،

كنت أعاني من صعوبة في تنظيم المشاريع الكبيرة باستخدام javascript مّما دفعني لايجاد بديل إلى أن وجدت typescript ، صحيح هنالك تحسينات لjavascript في ECMAScript 6 لكن لن أنتظر دعم المتصفحات لها[1] !

تعريف

typescript هي لغة برمجة كائنية التَّوجه من microsoft تترجم إلى شفرة javascript.

كيف ساعدتني على تنظيم المشروع وإنهائهة بوقت أقل من javascript

في البداية أشعر بمتعة كبيرة أثناء التطوير بtypescript أكثر من javascript ربما لإن الأخيرة غير منظمة نوعًا ما ، مما ساعدني على إنهاء المشروع بسرعة .

ما الّذي وجدته مميز فيها عن javascript

أنواع مُتغيرات

كنت أكره اللغات ذات أنواع المتغيرت لكن بعد العمل المتواصل على javascript و php فهمت فائدتهما في تنظيم الشفرة فهذا المتغير للعدد وهذا للنص وهكذا ،

بعض الأمثلة :

var a : string = "hello world";
var b : boolean = true;
var c : Element = window.document.createElement("p");
var d : number = 19;

// مصفوفة نصية 
var e : string[] = [];
e.push("HELLo");

// تحويل الرقم لنص
function f(a : number) : string{
    return <string>a.toString();
}

a = f(d);

تصميم أفضل

نعم javascript كائنية التوجه لكني شعرت أن تصميم typescript أفضل ،
مثال على شيفرة بtypescript آسف لم أجد فكرة أفضل :) :

module sites{
    abstract class site{
        value : string;
        isSsl : boolean = false;
        title : string;
        public itWork(callback : Function){
            var HttpRequest = new XMLHttpRequest;
            HttpRequest.onreadystatechange = function(progress : ProgressEvent){
                if(progress.stats == 200 && progress.readyState == 4){
                    callback.apply(HttpRequest,[true]);
                }
                else if(progress.stats != 200 && progress.readyState == 4){
                    callback.apply(HttpRequest,[false]);
                }
            }
            HttpRequest.onerror = function(){
                callback.apply(HttpRequest,[false]);
            }
            HttpRequest.open("get",this.value);
            HttpRequest.send(null);
        }
    }
    export class arabiaIo /** /:)*/ extends site{   
        value = "io.hsoub.com";
        isSsl = true;
        title = "اريبيا منصّة صناع المحتوى العربي :)";
        public itWork(callback : Function){
            super.itWork(callback);
        } 
    }
}

var arabiaIo = new sites.arabiaIo;
arabiaIo.itWork(function(work){
    work ? alert("يعمل") : alert("لا يعمل أو الطلب ممنوع");
}) 

تطبيق هذا المثال على javascript لن يكون بنفس التنظيم.

على الجانب

typescript لا تشبه أو تطابق أو تقارن مع jquery أو أي مشابه لها إطلا قًا ، الأولى لغة برمجة ! ويمكنك إستخدام jquery أو أي مكتبة javascript أخرى معها.

https://kangax.github.io/co... http://www.typescriptlang.org

[ موقع typescipt]

http://www.typescriptlang.org

/Playground [جربها!]

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

assassinateur أضف ردا

لم أجرب العمل هذه المكتبات، ربما لأنّ كل جافاسكربت التي كتبتها (من ناحية العميل) كانت بسيطة، أو المكتبات بسيطة، استخدمت ES6 مع node وأعجبني الكثير فيها

من ناحية أخرى، أحد أسباب إطلاق مايكروسوفت لهذه اللغة (التي تعمل بنفس مفهوم coffeescript) هو للمساح لمطوري .NET بالانتقال بسهولة، لأنها تقدم نفس طريقة الكتابة ونفس المميزات

هناك مكتبة اسمها Babel فكرت في استخدامها، هي ببساطة تسمح لك بكتابة جافاسكربت عبر استخدام كامل مميزات ES6 ثم تحويل إلى ES5 مدعوم من قبل كامل المتصفحات.

لا أجد مانعا من الطريقة التي أكتب بها جافاسكربت (سوى أن خاصية تحديد نوع المتغيرات أعجبتني كثيرا لأنذ هذه مشكلة عانيت معها في جافاسكربت) لكن إذا كانت typescript تدعم قدرا جيدا من مميزات ES6 فسأكون سعيدا باستخدامها

typescript لا تشبه أو تطابق أو تقارن مع jquery أو أي مشابه لها إطلا قًا ، الأولى لغة برمجة ! ويمكنك إستخدام jquery أو أي مكتبة javascript أخرى معها.

كنت أتوقع أن يطرح شخص هذا السؤال منذ أن بدأت القرائة، الجميل أنك تصديت له مبكرا

من ناحية أخرى، أحد أسباب إطلاق مايكروسوفت لهذه اللغة (التي تعمل بنفس مفهوم coffeescript) هو للمساح لمطوري .NET بالانتقال بسهولة، لأنها تقدم نفس طريقة الكتابة ونفس المميزات

نعم لاحظت تشابه مع c# وتشابه مع vb.net وبعض الخصائص تشبه f# مثل module :)

مازالت ES6 لم تمتلك مميزات typescript كلها وبما أنها ستترجم إلى es5 ولن تُقرأ من المتصفح الأفضل لي إذًا أن أستخدم typescript.

كنت أتوقع أن يطرح شخص هذا السؤال منذ أن بدأت القرائة، الجميل أنك تصديت له مبكرا

أحمد الله أنه لم ياتي شخص يجادل ويحاول إثبات العكس :(

ما تقوم به babel هو تقديم كامل خصائص ES6 لك مباشرة، وأنت تستخدمها بشكل عادي، فتقوم أنت مثلا بكتابة promise في سطر واحد، وهي تقوم بتحويل ذلك الكود إلى كود يقوم بنفس العمل بنفس الطريقة ولكن عبر ES5 وقد يكون حجمه عشرات السطور، لذا هي توفر لك كل الخواص الرائعة بدون تعب

لم ارتح لـ typescript رغم أنها تبدو قريبة للجافا و#c.

أفضل كتابة ES6 مع Babel خصوصا أني أجد نفسي أغلب الأوقات أستخدم webpack.

ربما أكون قد تسرعت في الحكم عليها، لكن لا أظن أني سأحتاجها يوما.

بالمناسبة "تطبيق هذا المثال على javascript لن يكون بنفس التنظيم." غير صحيح, لا أظن لغة البرمجة تلعب دورا كبيرا في كون الكود منظما أو لا, بل المبرمج من يقرر .

بالمناسبة "تطبيق هذا المثال على javascript لن يكون بنفس التنظيم." غير صحيح, لا أظن لغة البرمجة تلعب دورا كبيرا في كون الكود منظما أو لا, بل المبرمج من يقرر .

ليس دائمًا لغة البرمجة تصنع فرق كبير فمثلًا لن يكون تنظيم شيفرة بلغة c كمثل c++ أو java ! ، أتحدث عن es5 لا يوجد abstract فكيف ستصنع توريث لخصائص كائن ما ستكتب دالة تقوم بذلك وتأخذ مكان إضافي ؟ أيضًا أنواع المتغيرات ستحتاج بعض الشيفرات للتأكد من المدخلات الصحيحة.