CuriousSuperhero
CuriousSuperhero

Reputation: 6671

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.

Upvotes: 15

Views: 16383

Answers (1)

CuriousSuperhero
CuriousSuperhero

Reputation: 6671

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.

Upvotes: 15

Related Questions