javascript - 为什么声明类型 <any> 可以解决未知方法的错误? ( typescript )

标签 javascript jquery typescript

我有这个代码:

this.$(<string> button.className + ' input').bootstrapToggle('on');

typescript 给了我这个错误:

error TS2339: Property 'bootstrapToggle' does not exist on type 'JQuery<HTMLElement>'.

我成功修复了错误:

(<any> this.$(<string> button.className + ' input')).bootstrapToggle('on');

为什么将元素声明为“any”类型可以解决此错误?

最佳答案

这是因为bootstrapToggle jquery的声明文件中没有定义。

尝试通过在 .d.ts 下添加此类型的声明来添加此定义。项目中的文件

interface BootstrapToggleOptions {
    on?: string;

    off?: string;

    onstyle?: OnOffStyle;

    offstyle?: OnOffStyle;

    size?: Size;

    width?: number;

    height?: number;
}

type OnOffStyle = "default" | "primary" | "success" | "info" | "warning" | "danger";
type Size = "large" | "normal" | "small" | "mini";

interface JQuery {
    bootstrapToggle(): JQuery;

    bootstrapToggle(options?: BootstrapToggleOptions): JQuery;
}

使用(<any> this.$(<string> button.className + ' input')) hack,是不可取的,它有点破坏了打字的意义。

关于javascript - 为什么声明类型 <any> 可以解决未知方法的错误? ( typescript ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47872805/

相关文章:

javascript - jQuery-HTML div 选择 - 只选择一个

javascript - 如何解释可选 JavaScript 参数的文档

javascript - 如何解码这个十六进制代码javascript?

javascript - JS/TS 如何迭代对象数组并更改值

javascript - Visual Studio 2017 不编译 typescript

javascript - 为什么编译器在将数字/ bool 值分配给字符串 var 时不抛出错误

javascript - 使用 getElementById 从外部 JavaScript 到 asp 文字变量

javascript - 如何访问 json 中的数组元素值

typescript - 这在 Jasmine 测试 : Uncaught TypeError: Object prototype may only be an Object or null: undefined? 中意味着什么

PHP:代码被转换为 HTML &lt;!-- 评论? -->