我通过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 提供的其他函数的类型。
发生了什么?怎么可能从同一个类型文件中找到一些类型和另一些类型?
为了重现这个问题,我所有的项目文件都在这里。