首页 > 解决方案 > 提供类型时,在打字稿中分配之前使用变量

问题描述

我在打字稿中有这段代码,但我不明白为什么它告诉我在分配之前使用了变量:

这只发生在我将类型添加到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');
  }

标签: typescript

解决方案


如果您这样初始化数据库变量:

  let database: SQLiteDBConnection | null = null;

现在您的变量可以是数据库连接,也可以是null数据库连接,并且它总是被定义,这似乎是您在文件中进一步假设的内容。


推荐阅读