Javascript 如何为采用参数并同时使用“flowtype”的函数添加flowtype;“论点”;内部

Javascript 如何为采用参数并同时使用“flowtype”的函数添加flowtype;“论点”;内部,javascript,reactjs,flowtype,Javascript,Reactjs,Flowtype,以下代码来自OSS库(用于VDOM)。我正在尝试将flowtype添加到生成虚拟DOM节点的h函数中。但是请注意,函数在内部使用参数?它还需要两个输入。想知道如何输入注释 第一个参数是字符串或函数 第二个参数是一个包含大量键值的对象 它在内部使用参数,因为函数可以接受N个参数 a。因此,函数必须至少有2个参数(但可以有N个参数) b。从第三个参数开始,这些参数的类型必须是Array或string 所以你可以称之为: h(“b”,{…})或 h(()=>{},{…},[])或 h(()=>{},{

以下代码来自OSS库(用于VDOM)。我正在尝试将flowtype添加到生成虚拟DOM节点的
h
函数中。但是请注意,函数在内部使用
参数
?它还需要两个输入。想知道如何输入注释

  • 第一个参数是字符串或函数
  • 第二个参数是一个包含大量键值的对象
  • 它在内部使用参数,因为函数可以接受N个参数

    a。因此,函数必须至少有2个参数(但可以有N个参数)

    b。从第三个参数开始,这些参数的类型必须是
    Array
    string

  • 所以你可以称之为:

  • h(“b”,{…})
  • h(()=>{},{…},[])
  • h(()=>{},{…},[],[],[],[]…)
  • h(()=>{},{…},[],“string”,“string2”)


  • 您需要做的事情是为正在使用的库创建一个文件,并将其放入项目根目录中的
    flow-typed
    文件夹中。
    或者您也可以将其提交给

    制作
    libdef
    并不难。您只需创建一个包含以下内容的文件
    library name.js
    ,并声明其中的所有函数类型:

    声明模块“我的第三方库”{
    声明类型arg1Type=string |()=>any;
    声明类型arg2Type={
    [键:字符串]:任何,
    };
    声明类型restArgsType=Array


    谢谢,但是我不能更改
    h
    函数本身的签名。甚至可以这样做吗?正确。我正在为它贡献flowtype。最好的方法是制作一个libdef,就像在
    flow-Type
    @RajaRao提供的函数中一样。我用您在评论中告诉的上下文更改了我的答案,谢谢,但是y是类中的h函数吗?声明类名{h(arg1:arg1Type,arg2:arg2Type,…restArgs:restArgsType):void;}
    var i
    var stack = []
    
    export function h(tag, props) {
    var node
    var children = []
    
    for (i = arguments.length; i-- > 2; ) {
     stack.push(arguments[i])
    }
    
    while (stack.length) {
     if (Array.isArray((node = stack.pop()))) {
       for (i = node.length; i--; ) {
         stack.push(node[i])
        }
       } else if (node != null && node !== true && node !== false) {
        children.push(typeof node === "number" ? (node = node + "") : node)
      }
    }
    
     return typeof tag === "string" ? {
             tag: tag,
             props: props || {},
             children: children
           }
           : tag(props, children)
     }