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

كنت أعاني من صعوبة في تنظيم المشاريع الكبيرة باستخدام 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/compat-table/es6/

http://www.typescriptlang.org/ [ موقع typescipt]

http://www.typescriptlang.org/Playground [جربها!]