2

将 Typescript 与 Fuse.js 一起使用时出现此错误消息

TS2345:类型参数'{键:字符串;}' 不能分配给 'FuseOptions<{ 'ISBN': string; 类型的参数 '标题':字符串;“作者”:字符串;}>'。属性“键”的类型不兼容。类型 'string' 不可分配给类型 '("title" | "ISBN" | "author")[] | {名称:“标题”| “国际标准书号” | “作者”; 重量:数量;}[]'。

这是代码:

let books = [{
        'ISBN': 'A',
        'title': "Old Man's War",
        'author': 'John Scalzi'
    },
    {
        'ISBN': 'B',
        'title': 'The Lock Artist',
        'author': 'Steve Hamilton'
    }
]

let options = {
    keys: 'title'
}
let fuse = new Fuse(books, options)

let filterResult = fuse.search('old')

错误是当将鼠标悬停在选项上时let fuse = new Fuse(books, options)

4

1 回答 1

4

这也让我绊倒了一点。

编译器按从上到下的顺序移动,因此在查看 时options,它会推断它是 a ,这与您的书本类型string[]不兼容。keyof因此,在您的选项声明中添加类型注释。

此外,keys应该是一个键数组。

最后结果:

type Book = { ISBN:string; title: string; author: string; };

let options: Fuse.FuseOptions<Book>  = {
    keys: ['title'],
};
于 2018-12-20T15:23:53.387 回答