假设我在一个名为“math.js”的文件中有这个。
function double(n) {
return n * 2;
}
exports.double = double;
如果我想在名为“math.js.flow”的单独文件中声明参数并返回“double”函数的类型,我会在该文件中放入什么?
答案 0 :(得分:5)
您可以将其放在.js.flow
文件中:
// @flow
declare export function double(n: number): number;
请注意,如果您的.js
模块包含module.exports = function foo()
,则需要执行以下操作:
declare function foo(): void;
declare module.exports: typeof foo;
您还可以使用.js.flow
命令生成flow gen-flow-files
个文件。在撰写本文时,它有问题但有时会失败,所以我仍然手动编写.js.flow
文件,但如果成功,您可以查看它输出的内容,以反向工程.js.flow
格式的更多方面。
答案 1 :(得分:0)
.js.flow
文件被视为源文件。因此,对于您的示例,您可以执行以下操作:
function double(n: number): number {
return n * 2;
}
exports.double = double;
但是,如果我确切地知道你想要实现的目标,我可能会提供更好的建议。通常,您只需要正确注释源文件。
答案 2 :(得分:0)
编辑:修复了代码和额外信息中的错误
math.js.flow
// @flow
declare module.exports: {
double: (n: number) => number;
}
math.js
function double(n) {
return n * 2;
}
exports.double = double;
index.js
const double = require('./math').double;
console.log(double(20));
这是一张图片,因此您可以看到文件夹布局/流程正常工作
要回答您对declare export function double(n: number): number;
无效的原因的评论,请参阅this和this
简而言之,declare export
用于声明ES6模块的命名导出,例如export const foo = 'bar'
。您的数学模块是CommonJs模块,因此您必须使用declare module.exports: ...
语法