Babel:ES6中的函数参数类型

Cur*_*ero 12 javascript ecmascript-6 reactjs babeljs

如果我编写以下代码并通过Babel(6.5.0)进行转换,它可以正常工作.

function foo (first: string, second: number) {
    // code here
}
Run Code Online (Sandbox Code Playgroud)

: string并且: number刚刚从已编译的ES5代码中删除.

如果我使用错误的参数类型调用该函数,则不会导致任何错误/警告.即使没有任何功能,它们也能提供信息.

我无法在互联网上找到有关ES6参数输入的正确信息.参数输入甚至是ES6的一部分吗?

编辑: 这个问题在下面的评论中得到了回答,我根据它们包装了官方答案.

Cur*_*ero 12

感谢Joe Clay,BergiFelix Kling在评论部分的答案.由于没有人正式回答,我把讨论中的答案包括在内.

-

似乎一些Babel插件(例如,babel-plugin-transform-flow-strip-types)在转换时剥离参数类型.我正在使用babel-preset-react,包括babel-plugin-transform-flow-strip-types.

以下从http://babeljs.io/docs/plugins/transform-flow-strip-types/复制粘贴的babel-plugin-transform-flow-strip-types的示例行为

在:

function foo(one: any, two: number, three?): string {}
Run Code Online (Sandbox Code Playgroud)

日期:

function foo(one, two, three) {}
Run Code Online (Sandbox Code Playgroud)

结论,参数类型不是有效的ES6,但如果使用带剥离插件的Babel转换代码,则可以使用它们.