typescript - TypeScript + react-native-sqlite-storage => 错误 TS2304:找不到名称“事务”
问题描述
我通过react-native-sqlite-storage使用 SQLite并尝试使用 TypeScript。
但是 TypeScript 找不到某些类型。导致麻烦的代码:
db.transaction((tx: Transaction) => {
tx.executeSql('SELECT * FROM movies', [], (tx: Transaction, results: ResultSet) => {
console.log("Query completed");
});
});
打字稿错误:
$ ./node_modules/.bin/tsc --alwaysStrict --skipLibCheck
App.tsx:18:24 - error TS2304: Cannot find name 'Transaction'.
18 db.transaction((tx: Transaction) => {
~~~~~~~~~~~
App.tsx:19:54 - error TS2304: Cannot find name 'Transaction'.
19 tx.executeSql('SELECT * FROM movies', [], (tx: Transaction, results: ResultSet) => {
~~~~~~~~~~~
App.tsx:19:76 - error TS2304: Cannot find name 'ResultSet'.
19 tx.executeSql('SELECT * FROM movies', [], (tx: Transaction, results: ResultSet) => {
~~~~~~~~~
这太疯狂了,因为Transaction
接口是在这里定义的,DefiniteTyped,所以应该可以找到。正确找到 react-native-sqlite-storage 提供的其他函数的类型。
发生了什么?怎么可能从同一个类型文件中找到一些类型和另一些类型?
为了重现这个问题,我所有的项目文件都在这里。
解决方案
缺少的类型是react-native-sqlite-storage
模块的成员,并且您已经在 name 下导入了整个模块SQLite
:
import SQLite from 'react-native-sqlite-storage'
所以你必须限定这样的类型:
db.transaction((tx: SQLite.Transaction) => {
tx.executeSql('SELECT * FROM movies', [], (tx: SQLite.Transaction, results: SQLite.ResultSet) => {
console.log("Query completed");
});
});
就像你有资格一样SQLite.openDatabase
。
推荐阅读
- python - 尝试对两个数据集进行左连接但得到奇怪的结果
- html - 带有父 Div 的粘性侧边栏
- arrays - 使用 ARRAY[] 和 '{}'::int[] 创建数组是否存在性能差异?
- electron - Spectron 可用方法无法正常工作
- asp.net - asp.net core 3.1 应用程序在进程中运行忽略 appsettings.json
- java - 如何插入生成的密码
- c++ - 是否保证按字节为零的 int 是零的表示?
- php - 使用 JSON 密钥的 PHP curl 访问 GCP 存储桶文件
- python - 对带有条件语句的嵌套 for 循环的列表理解?
- python - Python打印变量,但不是分配给该变量的值