【问题标题】:flowtype - How to declare an interface for a package that exports a function?flowtype - 如何为导出函数的包声明接口?
【发布时间】:2015-11-10 03:11:24
【问题描述】:

假设我有一个像import AltContainer from 'alt-container'; 这样的导入。您将如何为此设置declaration?文档展示了如何为导出函数的模块实现这一点,但没有针对这种特殊情况的示例。

【问题讨论】:

    标签: javascript flowtype


    【解决方案1】:

    如果模块的exports本身就是一个函数,你可以从模块中声明一个名为exports的函数。

    lib/mymodule.js:

    declare module "mymodule" {
      declare function exports(foo: string): void;
    }
    

    index.js

    import f from "mymodule";
    f(0); // error: number ~> string
    

    【讨论】:

    • 太棒了!这是票。 :)
    • 抱歉这么久才得到回复!
    【解决方案2】:

    将这样的内容放入您的libs 目录中的文件中:

    declare module 'alt-container' {
      declare function hello(foo: string): number;
    }
    

    【讨论】:

    • 出于某种原因,这样的声明会引发^ Library parse error:^ Unexpected token ( 的第一个(。也许它还不支持这种类型的声明?请注意,我使用的是 Flow 0.18.1。
    • 糟糕,我忘了给函数命名。再试一次。
    • 问题是模块默认导出一个函数。如果它导出多个功能,您建议的解决方案将起作用。然后我可以这样命名它们并且它会起作用。
    • 啊,这更棘手。在#flowtype IRC 频道上提问可能会得到更好的结果。
    • 是的,我已经尝试了几次。到目前为止没有回复。
    猜你喜欢
    • 2017-05-10
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多