我正在用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]
,因此我无法真正理解其含义。
任何指针都将大有帮助!
答案 0 :(得分:1)
您正在更改cacheNames数组的类型,因为您在第一条if语句中省略了返回值。这将返回未定义,因此您的数组不再仅由字符串组成。将返回值更改为cacheName或一个空字符串,就可以了。