

Future Javascript: Types May Finally be Coming to Javascript
source link: https://hackernoon.com/future-javascript-types-may-finally-be-coming-to-javascript
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

With the promotion of Type Annotations to Proposal Level 1 Stage, Javascript is one step closer to being a more strongly typed language. Let's dive into what the changes will mean for Javascript.
Types in Javascript
Javascript is dynamically typed. That means that it figures out the type of something by where it appears. For example:
let x = 1; // typeof "number"
let y = "1"; // typeof "string"
In complicated applications and systems, this is a huge weakness. Applications can fall over for the smallest of things - such as your API returning "false" instead of false.
That means we have to sometimes bulletproof our code by doing silly things like this, especially in instances where we don't have control over a piece of software sending back wonky types:
if(x === true || x === "true") {
// this is true
}
This is a huge annoyance for dyed in the wool software engineers, but for beginners, Javascript is a gift. Javascript makes it so easy to write quite complicated things in a simple way. If your code is wrong, Javascript usually finds a way to make it work. Most Javascript developers find that the flexibility they love at the start, soon becomes painful as they become more competent in the language.
For these reasons, there has never been a strong push to make Javascript a typed language, with hard rules. The accessibility of Javascript is one of its great traits, and adding types would not only make it harder for beginners, but also potentially break a lot of the existing web technologies built on untyped Javascript.
As such, optional packages were developed instead - TypeScript and Flow being two of the best known. These take Javascript and turn it into a language with strongly declared types.
Enter: Javascript Types
The new type annotations proposal tries to find a middle ground, so Javascript can remain accessible, but allow for advanced features like types more easily.
In some ways, this was an inevitability. Strong types consistently come out on top of the most requested developer features for Javascript:
Most requested Javascript features
How Type Annotations will Work
To be clear, type annotations will not make Javascript a strongly typed language. Instead, they let Javascript work with types. What that means is that if you add types to Javascript once this specification reaches an implementation stage, they will simply be ignored. Should you compile it with Typescript, though, the types will work as normal.
If you've used TypeScript before, then, you'll be familiar with how type annotations look. For example, defining a type for a variable looks like this:
let x:string = "String";
let x:number = 5;
How Javascript would work after type annotations
Let's say you write a piece of code that looks like this:
let x = "String";
console.log(x);
Later down the line, you decide you want to add types. Instead of having to compile it with TypeScript, with type annotations we can simply add the types to our Javascript file:
let x:string = "String";
console.log(x);
In this case, :string
is simply ignored by Javascript - meaning it remains compatible with untyped Javascript, and type bundles like TypeScript. That means you can build it with TypeScript, but you can also just run it as a normal .js
file. Types in a vanilla Javascript file are ultimately comments.
Other Examples of Types in Type Annotations
The general roster of types that you'd expect can be found in type annotations. For example -
interfaces:
interface Name {
firstName: string,
lastName: string
}
union types:
function test(x: string | number) {
console.log(x);
}
generic types:
type Test<T> = T[];
let x:Test<number> = [ 1, 2, 3, 4 ];
Rationale behind Type Annotations
The main rationale is that as browser development has become more streamlined, and backend Javascript ecosystems like Deno and Node.JS have become more popular, there have been opportunities for Javascript to move to fewer and fewer build steps. The big change comes with TypeScript, where to run a TypeScript file, we need to build it back to Javascript. This is obviously a time-consuming and sometimes onerous step for developers and definitely limits efficiency.
One of the main draws to type annotations in TypeScript is that it removes another build step. Native TypeScript can be run in the browser without the need to convert it back to Javascript, greatly optimising the developer experience.
As well, this type of annotation acts give a standard base to type definitions in Javascript. By standardising the most agreed-upon parts of types in Javascript, it ensures consistency across all type compilers, making things easier for developers.
Conclusion
In conclusion, types are coming to Javascript, but perhaps not in the way people envisioned. Javascript will remain a dynamically typed language, but it will accept type declarations natively. This specification is still stage 1, so a lot may change - but it's an exciting time for Javascript to take its first step into a more strongly typed world.
Recommend
-
15
Transcript Evans: My name is Ben Evans, I use he/him pronouns. Because I work for a public company, I have to show you this slide. What it means is despite the fact that...
-
5
Ready your jaws for some spicy, juicy humans Although it didn't receive raving reviews from critics, Maneater is a very fun game to play. Developed by Tripwire Interactive, Maneater is already avail...
-
13
News & Events YouTube’s first-ever Beauty Festival is coming on May 14...
-
11
We may well be seeing mobile as the next platform for PlayStation gaming. At least according to Jim Ryan, Sony Interactive Entertainment's President and CEO. ...
-
5
News Microsoft Says '.NET 5/6 Will Not Be Coming to UWP Project Types,' Developers Sound Off By
-
3
Space solar power's time may finally be coming By Leonard David 1 day ago This longtime sci-fi dream could actually become reality in the next decade...
-
2
Humans Walk Weird. Scientists May Finally Know WhyHumanity’s peculiar gait has long confounded engineers and biomechanists—but it might be one of nature’s clever tricks.
-
9
Samsung May Finally Fix The Gap Problem Plaguing The Galaxy Z Fold ...
-
8
Samsung may finally announce the Galaxy A54 and A34 on March 15 Both the
-
7
WearOS 4 May Finally Fix One Of The Most Annoying Smartwatch Limitations ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK