typescript - 提供类型时,在打字稿中分配之前使用变量
问题描述
我在打字稿中有这段代码,但我不明白为什么它告诉我在分配之前使用了变量:
这只发生在我将类型添加到database
变量时。这是一个基于 Vue/Quasar 的项目,使用 Typescript。请注意,如果我将类型指定为“任何”,那么我没有任何问题,但如果可以的话,我宁愿避免走这条路。
谁能建议我可能做错了什么以及可能的解决方案?
import { SQLiteDBConnection } from '@capacitor-community/sqlite';
let database: SQLiteDBConnection;
try {
database = await sqlite.retrieveConnection(this.connectionName);
} catch (error) {
// ignore
}
try {
if (!database) {
// workaround an issue if `retrieveConnection` fails
await sqlite.closeConnection(this.connectionName);
}
} catch (error) {
// ignore
}
try {
if (!database) {
database = await sqlite.createConnection(this.connectionName);
}
} catch (error) {
// ignore
}
if (!database) {
throw new Error('unable to create or retrieve connection');
}
解决方案
如果您这样初始化数据库变量:
let database: SQLiteDBConnection | null = null;
现在您的变量可以是数据库连接,也可以是null
数据库连接,并且它总是被定义,这似乎是您在文件中进一步假设的内容。
推荐阅读
- javascript - 是否可以使用一个简单的函数来处理多个 useState 挂钩?
- r - 根据条件对列求和
- c# - 单击按钮从 asp .net MVC Web 应用程序打开 IOS 应用程序
- html - 如何定位 html 元素类名称而不是元素?
- python - 使用 mock.patch 模拟函数内部的变量
- html - 图像大小未重新调整以适应 flexbox
- javascript - Discord 音乐机器人由于某种原因停止工作
- c++ - 使用模板时:错误:没有匹配的构造函数用于初始化
- windows - 在 Windows 上从 Apache CGI 运行 gswin64c
- python - ValueError:输入 0 与层 lstm_15 不兼容:预期 ndim=3,发现 ndim=2