我可以将 JSDoc 注释与 Flow 一起使用以在每个文件的基础上强制键入吗?

Can I use JSDoc annotations with Flow to enforce typing on a per-file basis?

我想要的是通过 Flow 理解 JSDoc 语法,而不需要任何转译。

示例:

// @flow
/**
 * @param {string} str
 * @return {string}
 */
function foo(str) {
  return str + str;
}
foo(1);  // Flow shows error

然后使用flow check-contents < foo.js得到错误。

有可能吗?最好不要使用 Babel 或任何其他转译器。 (更重要的是 - 为什么 Flow 会在已经有可用标准的情况下选择发明自己的语法?这基本上会迫使我们选择 TypeScript 而不是 Flow。)

相关问题:Include Flow Types into JSDoc

不,但您可以使用此处所述的内联类型声明:https://flow.org/en/docs/types/comments/

示例:

// @flow

/*::
type MyAlias = {
  foo: number,
  bar: boolean,
  baz: string,
};
*/

function method(value /*: MyAlias */) /*: boolean */ {
  return value.bar;
}

method({ foo: 1, bar: true, baz: ["oops"] });