Det foreslås å legge til syntaks med typeinformasjon til JavaScript-språket

Microsoft, Igalia og Bloomberg har tatt initiativ til å inkludere syntaks i JavaScript-spesifikasjonen for eksplisitte typedefinisjoner, lik syntaksen som brukes i TypeScript-språket. For øyeblikket er prototypeendringene som er foreslått for inkludering i ECMAScript-standarden sendt inn for foreløpige diskusjoner (trinn 0). På neste møte i TC39-komiteen i mars er det planlagt å gå over til første fase av behandlingen av forslaget med involvering av ekspertmiljøet fra ECMA.

Å ha eksplisitt spesifisert typeinformasjon vil tillate deg å unngå mange feil under utviklingsprosessen, gjøre det mulig å bruke ytterligere optimaliseringsteknikker, forenkle feilsøking og gjøre koden mer lesbar og enklere for modifikasjon og støtte av tredjepartsutviklere. Typestøtte foreslås implementert som en valgfri funksjon - JavaScript-motorer og kjøretider som ikke støtter typekontroll vil ignorere merknader med typeinformasjon og behandle koden som før, og behandle typedata som kommentarer. Men typekontrollverktøy vil kunne bruke den tilgjengelige informasjonen til å identifisere feil knyttet til feil bruk av typer.

Dessuten, i motsetning til typeinformasjon spesifisert ved bruk av JSDoc-merknader spesifisert i form av kommentarer, vil direkte indikasjon av typer direkte i variable definisjonskonstruksjoner gjøre koden mer visuell, forståelig og enklere å redigere. For eksempel vil IDE-er med TypeScript-støtte umiddelbart kunne fremheve feil i skrevet JavaScript-kode uten ytterligere konverteringer. I tillegg vil innebygd typestøtte gjøre det mulig å kjøre programmer skrevet på maskinskrevne JavaScript-dialekter, som TypeScript og Flow, uten å transpilere fra ett språk til et annet.

Det foreslås å legge til syntaks med typeinformasjon til JavaScript-språket

Blant typene er det foreslått å legge til «string», «number» og «boolean», som kan brukes ved definering av variabler, funksjonsparametere, objektelementer, klassefelt, typematriser («number[]»). Det foreslås også å gi støtte for sammenslåtte typer ("streng | nummer") og generiske. la x: streng; funksjon add(a: tall, b: tall) { return a + b; } grensesnitt Person { navn: streng; alder:nummer; } funksjon foo (x: T) { return x; } funksjon foo(x: streng | tall): streng | tall { if (type x === tall) { return x + 1 } else { return x + "!" } }

Kilde: opennet.ru

Legg til en kommentar