如何使用ESlint验证promise(JS)语法?

时间:2018-04-01 17:02:38

标签: javascript atom-editor eslint

我希望验证promise语法,如下所示:

promise.foo(value).thedn((value) => {
    console.log(value);
  }).casch((value) => {
    console.log(value);

  });

如果例如then拼写错误或catch。我正在使用Atom Text Editor,但我认为这适用于所有编辑。

1 个答案:

答案 0 :(得分:0)

ESLint无法知道您的foo函数会返回一个承诺,并且无法知道正确拼写的then必然是一个承诺then(因此请确保仅.then.catch.finally用于返回),而不是语义不同但共享相同名称的内容。

如果你想在运行时之前进行那种检查,你可以看看TypeScript,它在JavaScript之上引入了一个类型系统,并在“编译”时从TypeScript到JavaScript进行验证(并且在运行中)在许多编辑[VS.Net,vscode,......不知道Atom]中。)

例如,在TypeScript中,您可以定义foo返回字符串的Promise,如下所示:

function foo() : Promise<String> {
    // ...
}

然后,这个代码将被TypeScript感知编辑器和TypeScript-to-JavaScript编译器标记为错误:

foo().thedn((value) => {
        console.log(value);
    }).casch((value) => {
        console.log(value);
    });

...因为它知道Promise没有名为thedn的方法。 (Live example in the TypeScript playground。)如果您解决了这个问题,它会在.casch标记出同样的问题。 (Live example updated。)