属性 'noUiSlider' 在类型 'HTMLElement' 上不存在
Property 'noUiSlider' does not exist on type 'HTMLElement'
这是一个障碍。我做错了什么?
....
/// <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
,当然 noUiSlider
不会在那里。
编辑(解决方案):
var slider = document.getElementById('slider') as noUiSlider.Instance;
noUiSlider.create(slider, {
//...blah...
});
slider.noUiSlider.on('update', (values, handle) => {
$input.val(values[0]);
});
根据链接 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
}
}
这是一个障碍。我做错了什么?
....
/// <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
,当然 noUiSlider
不会在那里。
编辑(解决方案):
var slider = document.getElementById('slider') as noUiSlider.Instance;
noUiSlider.create(slider, {
//...blah...
});
slider.noUiSlider.on('update', (values, handle) => {
$input.val(values[0]);
});
根据链接 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
}
}