ServiceWorker代码上的TypeScript错误:[2345] [对象对象]

时间:2018-07-09 16:02:28

标签: typescript service-worker

我正在用TypeScript(2.4.2)编写服务工作者activate事件处理程序,如下所示:

function activate(event: ExtendableEvent) {
  event.waitUntil(
    caches.keys().then(function(cacheNames: Array<string>) {
      return Promise.all(
        cacheNames.map(function(cacheName: string) {
          if (!OFFLINE_CACHE_REGEX.test(cacheName)) {
            return;
          }
          if (OFFLINE_CACHE_NAME !== cacheName) {
            return caches.delete(cacheName);
          }
        })
      );
    })
  );
}

该方法的灵感来自杰克·阿奇博尔德(Jake Archibald)的offline cookbook

问题是,TypeScript编译器会引发错误,并且只能说是这样:

  

../ path-to-file.ts:40: [2345] [object Object] '

上面代码中的第40行指向return Promise.all(

虽然我可以猜出错误代码是TS2345,但由于我所拥有的只是[object Object],因此我无法真正理解其含义。

任何指针都将大有帮助!

1 个答案:

答案 0 :(得分:1)

您正在更改cacheNames数组的类型,因为您在第一条if语句中省略了返回值。这将返回未定义,因此您的数组不再仅由字符串组成。将返回值更改为cacheName或一个空字符串,就可以了。