下面这段typescript代码:
function rule(name?: string, options?: IRuleOptions)(func: IRuleFunction): Rule
export type IRuleFunction = (
parent?: any,
args?: any,
context?: any,
info?: GraphQLResolveInfo,
) => IRuleResult | Promise<IRuleResult>
interface IRuleOptions {
cache?: ICacheOptions
fragment?: IFragment
}
问题:
第一行代码如下:
function rule(name?: string, options?: IRuleOptions)(func: IRuleFunction): Rule
------------------------------------- ------------------- ----
(1) (2) (3)
(1)是函数的参数,可以看懂。
(2)和(3)是什么意思?
请大佬指导一下,谢谢
更新:
代码来源:https://github.com/maticzav/g...
很神奇,graphql-shield 的 README.md 里确实是这么写的,但是我认为可能是 Markdown 解析出错,把
=>
给搞没了。翻了下它的源码,是这么定义的:从这个关系来看
rule
是一个(name, options) => X
类型的函数表达式,这个 X 是
(IRuleFunction) => Rule
类型的函数表达式,其后的=> {...}
是函数体。所以如果要完整的写 rule 的类型是
或者函数定义形式