2
votes

Comment obtenir des types pour expo-sqlite?

Dans la version 33 de l'expo sdk, sqlite a été déplacé vers son propre package, expo-sqlite, et maintenant je ne peux pas charger les types.

Au lieu de

Cannot find namespace 'SQLite'.


0 commentaires

3 Réponses :


0
votes

Vous ne semblez pas avoir téléchargé le module. Installez le module et appliquez-le.

npm install expo-sqlite


2 commentaires

J'ai installé le module. Le code s'exécute, il n'est tout simplement pas tapé correctement


@Daniel Vous pouvez essayer npm install La méthode indiquée dans le hub de drapeau doit être npm .



0
votes

J'ai rencontré le même problème et créé un fichier de déclaration de type qui a résolu le problème pour moi.

https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html

J'ai copié les déclarations de ce package https://www.npmjs.com/package/@types/expo

Il s'agit de la déclaration https : //github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/expo/v31/index.d.ts#L2467

Mon projet a maintenant un expo-sqlite .d.ts dans le dossier src qui ressemble à

declare module 'expo-sqlite' {
  export namespace SQLite {
    type Error = any;

    interface Database {
      transaction(
        callback: (transaction: Transaction) => any,
        error?: (error: Error) => any, // TODO def of error
        success?: () => any
      ): void;
    }

    interface Transaction {
      executeSql(
        sqlStatement: string,
        arguments?: string[] | number[],
        success?: (transaction: Transaction, resultSet: ResultSet) => any,
        error?: (transaction: Transaction, error: Error) => any
      ): void;
    }

    interface ResultSet {
      insertId: number;
      rowAffected: number;
      rows: {
        length: number;
        item: (index: number) => any;
        _array: HashMap[];
      };
    }

    function openDatabase(
      name:
        | string
        | {
            name: string;
            version?: string;
            description?: string;
            size?: number;
            callback?: () => any;
          },
      version?: string,
      description?: string,
      size?: number,
      callback?: () => any
    ): any;
  }
}


0 commentaires

0
votes

Des types manquaient dans le package expo-sqlite. J'ai ouvert un problème sur la page GitHub d'Expo, et le problème a été résolu.

Problème GitHub: https://github.com/expo/expo/issues/5264 < / a>

Demande d'extraction Github: https://github.com/expo/expo/pull/5544


0 commentaires