为什么流在我的 .js.flow 文件中看不到 .random 属性
Why isn't flow seeing the .random property on my .js.flow file
我正在尝试使用没有流类型的第 3 方库。如果我从 sjcl.random.randomWords(2, 5)
开始,流程会告诉我找不到 random
。
sjcl.js.flow:
// @flow
declare module sjcl {
declare type SjclType = {
random: {
randomWords: (nwords: number, paranoia: number) => Array<number>,
}
}
declare module.exports: SjclType;
}
今天早上在 IRC 上与@asa-ayers 交谈并记录了后代的答案。
在此示例中,sjcl.js.flow
不是 lib 文件。它是位于 sjcl.js
旁边的文件。 Flow 看到 .flow
扩展,并在有人需要 sjcl
.
时使用 sjcl.js.flow
的导出类型而不是 sjcl.js
的导出类型
任何非 lib 文件都可以声明它导出的类型。如果它想声明 CommonJS 导出,它可以使用语法 declare module.exports: Type
。如果它想声明 ES6 导出,它可以使用语法 declare export
.
所以对于有问题的例子,正确的语法如下:
/* @flow */
type SjclType = {
random: {
randomWords: (nwords: number, paranoia: number) => Array<number>,
}
}
declare module.exports: SjclType;
我正在尝试使用没有流类型的第 3 方库。如果我从 sjcl.random.randomWords(2, 5)
开始,流程会告诉我找不到 random
。
sjcl.js.flow:
// @flow
declare module sjcl {
declare type SjclType = {
random: {
randomWords: (nwords: number, paranoia: number) => Array<number>,
}
}
declare module.exports: SjclType;
}
今天早上在 IRC 上与@asa-ayers 交谈并记录了后代的答案。
在此示例中,sjcl.js.flow
不是 lib 文件。它是位于 sjcl.js
旁边的文件。 Flow 看到 .flow
扩展,并在有人需要 sjcl
.
sjcl.js.flow
的导出类型而不是 sjcl.js
的导出类型
任何非 lib 文件都可以声明它导出的类型。如果它想声明 CommonJS 导出,它可以使用语法 declare module.exports: Type
。如果它想声明 ES6 导出,它可以使用语法 declare export
.
所以对于有问题的例子,正确的语法如下:
/* @flow */
type SjclType = {
random: {
randomWords: (nwords: number, paranoia: number) => Array<number>,
}
}
declare module.exports: SjclType;