gpt4 book ai didi

javascript - Twitter Typeahead - Typescript 中的 Bloodhound 错误

转载 作者:行者123 更新时间:2023-12-03 08:58:22 25 4
gpt4 key购买 nike

我正在关注 pre-fetch example from the Typeahead site但我使用的是 Typescript。

我已拉入 typeahead.d.ts file在我尝试使用 Bloodhound 实例作为数据集源之前一切正常。

示例如下所示:

var countries = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
// url points to a json file that contains an array of country names, see
// https://github.com/twitter/typeahead.js/blob/gh-pages/data/countries.json
prefetch: '../data/countries.json'
});

// passing in `null` for the `options` arguments will result in the default
// options being used
$('#prefetch .typeahead').typeahead(null, {
name: 'countries',
source: countries
});

所以我对 Typescript 的翻译如下:

// typeahead for the employees box
var emps = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: { url: prefetchUrl }
});

$("#employee").typeahead(null, {
name: "emps",
source: emps
});

要么是我翻译的JS错误,要么是d.ts文件错误,出现以下错误:

Argument of type '{ name: string; source: Bloodhound<{}>; }' is not assignable to parameter of type 'Dataset'.

Types of property 'source' are incompatible.

Type 'Bloodhound<{}>' is not assignable to type '(query: string, cb: (result: any) => void) => void'.

任何人都可以告诉我我做错了什么或者我需要在 d.ts 文件中修改什么才能编译它吗?

由此创建的 JavaScript 实际上工作正常,但 Typescript 错误阻止了我的项目构建。

干杯。

最佳答案

DataSet 的定义(您要分配的源)是:

source: (query: string, cb: (result: any) => void) => void;

您尝试向其传递 Bloodhound 对象类型的位置。

我认为实际 API 发生了变化,或者 d.ts 文件不是最新的。

在进一步探索该项目的源代码后,该库似乎确实采用 Bloodhound 对象作为源...

// use duck typing to see if source is a bloodhound instance by checking
// for the __ttAdapter property; otherwise assume it is a function
this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;

Reference

话虽这么说,我会通过拉取请求或联系作者来更新明确键入的 d.ts

编辑

可能更新 d.ts:

source: (query: string, cb: (result: any) => void) => void | Bloodhound;

关于javascript - Twitter Typeahead - Typescript 中的 Bloodhound 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32395563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com