使用TypeScript改写AppWrite React Todo Demo的api.js遇类型错误求助
解决TypeScript类型不匹配错误
你遇到的错误是因为TypeScript自动推断api.sdk的类型为null,但后续赋值的对象类型与null不兼容。只需显式定义类型即可解决:
首先导入Appwrite相关类型,并定义SDK结构的接口:
import { Appwrite, Account, Databases } from 'appwrite'; interface ApiSdk { database: Databases; account: Account; }
接着给api变量指定完整类型,允许sdk为null或目标对象:
let api: { sdk: ApiSdk | null; provider: () => ApiSdk; } = { sdk: null, provider: () => { if (api.sdk) { return api.sdk; } const appwrite = new Appwrite(); appwrite.setEndpoint(Server.endpoint).setProject(Server.project); const account = new Account(appwrite); const database = new Databases(appwrite); api.sdk = { database, account }; return api.sdk; } };
这样TypeScript就能正确识别类型,错误就会消失。
内容的提问来源于stack exchange,提问作者Vishal Tanna
相关产品推荐
相关产品推荐

