Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Babel: Function parameter types in ES6

If I write the following piece of code and transpile it through Babel (6.5.0) it works correctly.

function foo (first: string, second: number) {
    // code here
}

: string and : number are just removed from the transpiled ES5 code.

If I call the function using wrong parameter types, it does not result in any error/warning. They are informative even though do not have any functionality.

I cannot find proper information about ES6's parameter typing on internet. Is parameter typing even part of ES6?

EDIT: This question got answered in the comments below and I wrapped the official answer based on them.

like image 504
CuriousSuperhero Avatar asked Mar 10 '16 12:03

CuriousSuperhero


1 Answers

Thanks for Joe Clay, Bergi and Felix Kling for the answers in the comments section. I wrapped the answer below from the discussion as no-one answered officially.

--

It seems that some Babel plugins (eg. babel-plugin-transform-flow-strip-types) strip parameter types off while transpiling. I'm using babel-preset-react that includes babel-plugin-transform-flow-strip-types.

Example behaviour of babel-plugin-transform-flow-strip-types copy-pasted below from http://babeljs.io/docs/plugins/transform-flow-strip-types/

In:

function foo(one: any, two: number, three?): string {}

Out:

function foo(one, two, three) {}

Conclusion, parameter types are not valid ES6, but them can be used if code is transpiled using Babel with the stripping plugins.

like image 180
CuriousSuperhero Avatar answered Sep 21 '22 12:09

CuriousSuperhero