1

我正在尝试将库客户端与 TypeScript 一起使用。(Zepto,一个轻量级的 JQuery 替代品)

这是针对旧浏览器的,所以我不想使用 import 和花哨的 ES6 语法,最好避免 require/commonJS 等。

所以我只是使用脚本标签将它添加到同一页面。

这个库有一个类型定义。我已经添加了它。

然后在我的主 JS 文件中添加:

/// <reference path="../typings/browser.d.ts" />

该文件指向包含以下内容的文件:

/// <reference path="browser/ambient/node/index.d.ts" />
/// <reference path="browser/ambient/zepto/index.d.ts" />
/// <reference path="browser/definitions/universal-analytics/index.d.ts" />

等等

但如果我尝试:

Zepto.ajax({

给出 TS 错误:

Property 'ajax' does not exist on type '(fn: ($: ZeptoStatic) => void) => void'.

还有一大堆其他错误。

Argument of type 'string' is not assignable to parameter of type '($: ZeptoStatic) => void'.

我是否正确地使用这些类型文件客户端?也许只是 Zepto 的打字不正确......?

感谢您的任何指示。最好不要一直得到大量的垃圾输出tsc......

4

1 回答 1

0

我认为这不是Zeptovar 的使用方式。

直接从zeptojs.com的“核心方法”部分我们可以看到,当 lib 准备好使用时,Zepto var 可用于指定回调函数:

Zepto(function($){
  alert('Ready to Zepto!')
})

这正是zepto.d.ts 所包含的 - 声明一个接受回调函数作为唯一参数的函数:

declare var Zepto: (fn: ($: ZeptoStatic) => void) => void; 

如果你想使用 zepto 方法 - 继续通过$var 访问它们,就像在 jquery 中一样:

$.ajax(......);

这正是它的定义所说的:

declare var $: ZeptoStatic;

希望这可以帮助。

于 2016-04-17T11:33:36.117 回答