在flowjs 0.54.0中新的“Missing annotation”错误

切换到0.54.0以下代码片段后:

function runKarmaTest() { const KARMA_CONFIG = {}; return new Promise(function (resolve, reject) { new karma.Server(KARMA_CONFIG, function (exitCode) { if (exitCode === 0) { resolve(); } else { reject(exitCode); } }).start(); }); } 

报告以下错误:

 Error: scripts/runKarma.js:76 v---------------------------------------- 76: return new Promise(function (resolve, reject) { 77: new karma.Server(KARMA_CONFIG, function (exitCode) { 78: if (exitCode === 0) { ...: 84: }); -^ type parameter `R` of constructor call. Missing annotation 

在行中return new Promise(function (resolve, reject) {我似乎无法弄清楚什么是错的?

它看起来像它想知道的是承诺包装的价值的types。 在这种情况下,它看起来像只是undefined ,因为成功案例不给任何价值。 你可以注释返回这个函数返回一个Promise<void>或类似的东西,使这个错误消失的函数。

不过,好奇的是,这发生在0.54而不是之前。

runKarmaTest函数中的Promise<void>注解解决了这个问题:

 function runKarmaTest(): Promise<void> { const KARMA_CONFIG = {}; return new Promise(function (resolve, reject) { new karma.Server(KARMA_CONFIG, function (exitCode) { if (exitCode === 0) { resolve(); } else { reject(exitCode); } }).start(); }); } 

我还不确定:

  • 为什么这个注释是在0.54而不是在以前
  • 为什么streamType Inference无法从parsing中缺less的参数中推断出它