【问题标题】:Property 'noUiSlider' does not exist on type 'HTMLElement'“HTMLElement”类型上不存在属性“noUiSlider”
【发布时间】:2016-07-17 23:05:16
【问题描述】:

这是一个路障。我做错了什么?

....
/// <reference path="../../../typings/tsd.d.ts" />
var slider:HTMLElement = document.getElementById('slider');

noUiSlider.create(slider, {
    start: +$input.val(),
    step: +$input.prop('step'),
    behaviour: 'tap',
    range: {
        'min': +$input.prop('min'),
        'max': +$input.prop('max')
    },
    format: wNumb({
        decimals: 0,
        thousand: ','
    })
});

// this barfs in TS — error in as title of this post
slider.noUiSlider.on('update', (values, handle) => {
    $input.val(values[0]);
});

// this does too.
<HTMLElement>slider.noUiSlider.on('update', (values, handle) => {
    $input.val(values[0]);
});

我的 TSD 文件包含来自 https://github.com/retyped/nouislider-tsd-ambient/blob/master/nouislider.d.ts 的 nouislider 输入

错误详情:

{ [TypeScript error: resources/assets/typescript/common.ts(44,25): Error TS2339: Property 'noUiSlider' does not exist on type 'HTMLElement'.]
    message: 'resources/assets/typescript/common.ts(44,25): Error TS2339: Property \'noUiSlider\' does not exist on type \'HTMLElement\'.',
    fileName: 'resources/assets/typescript/common.ts',
    line: 44,
    column: 25,
    name: 'TypeScript error' }

想法?

编辑: 我的 IDE (PHPStorm) 暗示可能有错误。 这指向lib.es6.d.ts,当然noUiSlideraint 会在那里。

编辑(解决方案):

var slider = document.getElementById('slider') as noUiSlider.Instance;

    noUiSlider.create(slider, {
      //...blah...
    });

    slider.noUiSlider.on('update', (values, handle) => {
        $input.val(values[0]);
    });

【问题讨论】:

    标签: typescript browserify tsd


    【解决方案1】:

    根据链接的d.ts,您似乎需要这样做:

    var slider: noUiSlider.Instance = document.getElementById('slider') as noUislider.Instance;
    

    他们似乎没有更改HTMLElement 接口,而是使用noUiSlider.Instance 扩展它:

    declare module noUiSlider {
        ...
        interface noUiSlider {
            ...
        }
    
        interface Instance extends HTMLElement {
            noUiSlider: noUiSlider
        }
    }
    

    【讨论】:

    • 错误 TS2322:类型“HTMLElement”不可分配给类型“Instance”。将在几秒钟内用更多信息更新问题。
    • var slider = document.getElementById('slider') as noUiSlider.Instance; 怎么样?
    • 同样的错误信息。这很奇怪。就好像打字文件被忽略了一样。
    • 其实你做到了。它在滑块实例a 上进行了铸造,它已经解决了这个问题。谢谢。
    猜你喜欢
    • 2022-01-13
    • 2021-12-15
    • 2019-09-16
    • 2017-08-08
    • 2018-10-19
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多