如何获得event.target.result在javascript indexdb typescript工作?<



在我的javascript/typescript项目中,我有以下代码

request.onupgradeneeded = (event: IDBVersionChangeEvent) => {
console.log('idb onupgradeneeded firing');
const db = event.target.result;
//if (db != null) {
//console.log(`Upgrading to version ${db.version}`);
if (!request.result.objectStoreNames.contains(this.#name)) {
request.result.createObjectStore(this.#name, {keyPath: 'id', autoIncrement:true});
}
//}
};

但问题是这段代码

event.target.result;

显示下划线表示Property 'result' does not exist on type 'EventTarget'.

如何在typescript中修复这个问题?

domTypescript库提供的handler回调类型中没有足够的类型信息

也许您可以为indexedDB.open定义自己的类型,但是手动向下转换目标看起来要简单得多:

const db = (event.target as IDBOpenDBRequest).result;

或者,像@kelsny建议的那样,使用原始请求对象:

const db = request.result; // event.target === request

最新更新