Javascript 如何为采用参数并同时使用“flowtype”的函数添加flowtype;“论点”;内部
以下代码来自OSS库(用于VDOM)。我正在尝试将flowtype添加到生成虚拟DOM节点的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(()=>{},{
h
函数中。但是请注意,函数在内部使用参数
?它还需要两个输入。想知道如何输入注释
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)
}