You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript使用expo-sqlite时Promise类型定义与回调类型报错如何解决?

错误原因

expo-sqlite 对 SQLStatementErrorCallback 类型的定义要求,SQL执行的错误回调必须返回一个布尔值:

  • 返回 true:表示你已自行处理该错误,当前事务不会中断,也不会触发事务级别的错误回调
  • 返回 false:表示错误未处理,会立即终止当前事务

你原代码中的错误回调(_, err) => reject(err)默认返回void,和要求的boolean类型不匹配,因此触发类型报错。你定义的Promise<void>类型本身没有问题,不需要修改。

解决方案

给错误回调加上明确的布尔返回值即可,示例修改后代码如下:

import * as SQLite from 'expo-sqlite';

const db = SQLite.openDatabase('address.db');

export const init = () => {
    return new Promise<void>((resolve, reject) => {
        db.transaction((tx) => {
            tx.executeSql(`CREATE TABLE IF NOT EXISTS user (
                name TEXT NOT NULL,
                email TEXT NOT NULL,
                password TEXT NOT NULL
            )`,
            [],
            () => resolve(),
            (_, err) => {
                reject(err);
                // 此处返回true表示已自行处理错误,符合类型要求
                return true;
            },
            )
        });
    });
}

内容的提问来源于stack exchange,提问作者Joaquin Palacios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:09:02