Typescript 如何解决PockDB的不正确(?)类型脚本/定义类型打字?

Typescript 如何解决PockDB的不正确(?)类型脚本/定义类型打字?,typescript,pouchdb,typescript-typings,definitelytyped,Typescript,Pouchdb,Typescript Typings,Definitelytyped,我正在寻找有关TypeScript和的帮助。考虑这个TS代码: import PouchDB = require('pouchdb') import find = require('pouchdb-find') PouchDB.plugin(find) const data = new PouchDB("http://localhost:5984/data"), export async function deleteLastRevForIds(dbname, ids) { const

我正在寻找有关TypeScript和的帮助。考虑这个TS代码:

import PouchDB = require('pouchdb')
import find = require('pouchdb-find')
PouchDB.plugin(find)

const data = new PouchDB("http://localhost:5984/data"),

export async function deleteLastRevForIds(dbname, ids) {
  const docsToDelete = await data.find({
    fields: ["_id", "_rev"],
    selector: { _id: { $in: ids } }
  })

  const deletePromise = docsToDelete.docs.map(doc => {
    return data.remove(doc) // <-- HERE TSC SHOUTS AT ME about `doc`
  })
  const deletion = await Promise.all(deletePromise)
  return deletion
}
发生的情况是,
find()
调用 返回一个
{docs:pockdb.Core.IdMeta[]}
。顾名思义, a表示
{u id:string}
的数组

但这是假的
backdb.find()
不只是返回
{u id:…}
对象的列表, 它返回一个
{u id:…,\u rev:…}
列表(加上我明确要求这两个字段)。还是我遗漏了什么

因此,在调用
remove()
函数时(DT正确键入 对于这样一个对象,需要一个完全指定的_id+_rev
RevisionIdMeta
),TS对我大喊大叫

我试着把这东西向四面八方抛来抛去,但无法使它屈服于我的意志
tsc
不断出错,表示我的对象中缺少
\u rev

  • 有没有办法让我做这样一个“深”的演员
  • 如果没有,是否有办法尽可能在本地覆盖DT键入
  • 我应该完全做别的事情吗
另外,我是否应该建议更改DT打字

谢谢

有没有办法让我做这样一个“深”的演员

您始终可以使用
将某些内容作为任意内容进行重新转换。显然,如果不能获得正确的类型,这应该是最后的手段,因为断言没有任何安全性。例如,
123作为任何窗口编译

有没有办法尽可能在本地覆盖DT键入

是的,看一看

我应该完全做别的事情吗


如果您确定类型定义是错误的,您可以随时对其进行修补,并向DefiniteTyped提交PR。

是的,数据库查找定义是错误的。像这样的事情会让你动起来

const data=new-db(“http://localhost:5984/data")
接口FixedFindResponse{
docs:pockdb.Core.ExistingDocument[];
}
导出异步函数deleteLastRevForIds(dbname:void,ids:number[]){
const docsToDelete:FixedFindResponse=wait data.find({
字段:[“\u id”和“\u rev”],
选择器:{u id:{$in:ids}}
})
const deletePromise=docsToDelete.docs.map(doc=>{
返回数据。删除(单据)//
Argument of type 'IdMeta' is not assignable to parameter of type 'RemoveDocument'.
  Type 'IdMeta' is not assignable to type 'RevisionIdMeta'.
    Property '_rev' is missing in type 'IdMeta'.'