typeahead.js使用VAL “方法”,返回输入字段的值:如何将JQuery转换为字符串 - 或者如何避免这种需要?
不幸DefinitelyTyped d.ts为typeahead.sj
jQuery#typeahead('val')
(https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#api)不包含存在这个“方法”。
但是当我尝试添加新的签名
typeahead(methodName : 'val'): string;
我得到这个错误
TS2154:专业超载签名是不能分配给任何非专业的签名。
现在,如果我弄清楚了,那是因为其他具有不同签名的方法已经存在,例如,如果我创建一个返回jQuery对象
typeahead(methodName : 'val'): JQuery;
除“方法”现在返回,而不是字符串JQuery的,当我尝试将其转换为字符串这样的签名本
typeahead(methodName: 'destroy'): JQuery;
一切正常
<string>$('#typeahead').typeahead('val')
我得到这个错误
TS2012:无法将'JQuery'转换为'string':类型'String'丢失 类型'JQuery'的属性'ajaxComplete'。
如何正确实现val“方法”?
PS:我一直使用单词“方法”的撇号,因为我觉得在2014年JQuery插件使用字符串作为方法名称是很荒谬的。
修正:https://github.com/borisyankov/DefinitelyTyped/pull/2538 – basarat