JavaScript тіліне типтік ақпараты бар синтаксисті қосу ұсынылады

Microsoft, Igalia және Bloomberg синтаксисті TypeScript тілінде қолданылатын синтаксиске ұқсас анық түр анықтамалары үшін JavaScript спецификациясына қосу туралы бастама көтерді. Қазіргі уақытта ECMAScript стандартына қосу үшін ұсынылған прототиптік өзгерістер алдын ала талқылауға жіберілді (0-кезең). Наурызда өтетін TC39 комитетінің келесі отырысында ECMA сарапшылар қауымдастығын тарта отырып, ұсынысты қараудың бірінші кезеңіне көшу жоспарлануда.

Анық көрсетілген түр ақпаратының болуы әзірлеу процесінде көптеген қателерді болдырмауға мүмкіндік береді, қосымша оңтайландыру әдістерін қолдануға мүмкіндік береді, жөндеуді жеңілдетеді және кодты оқылатын және үшінші тарап әзірлеушілерінің модификациясы мен қолдауы үшін жеңілдетеді. Түрді қолдауды қосымша мүмкіндік ретінде енгізу ұсынылады - типті тексеруге қолдау көрсетпейтін JavaScript қозғалтқыштары мен орындалу уақыттары түр ақпараты бар аннотацияларды елемейді және кодты бұрынғыдай өңдейді, түр деректерін түсініктеме ретінде қарастырады. Бірақ типті тексеру құралдары типтерді дұрыс пайдаланбаумен байланысты қателерді анықтау үшін қолда бар ақпаратты пайдалана алады.

Сонымен қатар, түсініктемелер түрінде көрсетілген JSDoc аннотациялары арқылы көрсетілген типтік ақпараттан айырмашылығы, түрлерді тікелей айнымалы анықтау құрылымдарында тікелей көрсету кодты көрнекі, түсінікті және өңдеуді жеңілдетеді. Мысалы, TypeScript қолдауы бар IDE терілген JavaScript кодындағы қателерді қосымша түрлендірулерсіз бірден бөлектей алады. Бұған қоса, кіріктірілген типті қолдау TypeScript және Flow сияқты терілген JavaScript диалектілерінде жазылған бағдарламаларды бір тілден екінші тілге көшірмей іске қосуға мүмкіндік береді.

JavaScript тіліне типтік ақпараты бар синтаксисті қосу ұсынылады

Түрлердің арасында айнымалыларды, функция параметрлерін, объект элементтерін, класс өрістерін, терілген массивтерді («сан []») анықтау кезінде қолдануға болатын «жол», «сан» және «логикалық» қосу ұсынылады. Сондай-ақ біріктірілген түрлерге («жол | саны») және генериктерге қолдау көрсету ұсынылады. let x: жол; қосу функциясы (a: сан, b: сан) { a + b қайтару; } интерфейс Адам { аты: жол; жасы:саны; } функциясы foo (x: T) { x қайтару; } функциясы foo(x: жол | саны): жол | сан { егер (x түрі === сан) { қайтару x + 1 } басқа {қайтару x + "!" } }

Ақпарат көзі: opennet.ru

пікір қалдыру