我的最终目标是在aurelia项目中为materialize-css执行一些初始化代码。 I have a related question on this matter,但它从未解决过。问题如下:我使用的是typescript,到目前为止还无法执行以下函数:
$('slider').slider;
所以我决定将这些文件放在一个javascript文件中(它在index.html中查看import中的materialize指令)并在顶部放置一个定义文件。当我尝试编写声明文件时,我按照typescriptlang.org提供的说明编写了这个:
module initializers {
function setUpHome(): void;
}
declare module "initializers" {
export = initializers;
}
但是我收到以下错误:
A 'declare' modifier is required for a top level declaration in a .d.ts file
我愿意接受任何指导。
编辑:功能setUpHome
function setUpHome() {
console.log("hello");
$('.slider').slider();
$('select').material_select();
$('.button-collapse').sideNav();
var slider = document.getElementById('wordCountSlider');
noUiSlider.create(slider, {
start: [0, 6000],
connect: true,
step: 50,
range: {
'min': 0,
'max': 6000
},
format: wNumb({
decimals: 0
})
});
slider = document.getElementById('timeRangeSlider');
noUiSlider.create(slider, {
start: [0, 5],
connect: true,
step: 1,
range: {
'min': 0,
'max': 5
},
format: wNumb({
decimals: 0
})
});
setUpTagSearchFilter();
};
function setUpTagSearchFilter() {
var cities = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('text'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: 'assets/cities.json'
});
cities.initialize();
var tagfilter = $('#tag-filter');
tagfilter.materialtags({
itemValue: 'value',
itemText: 'text',
typeaheadjs: {
name: 'cities',
displayKey: 'text',
source: cities.ttAdapter()
}
});
tagfilter.materialtags('add', { "value": 1 , "text": "Amsterdam" , "continent": "Europe" });
tagfilter.materialtags('add', { "value": 4 , "text": "Washington" , "continent": "America" });
tagfilter.materialtags('add', { "value": 7 , "text": "Sydney" , "continent": "Australia" });
}
答案 0 :(得分:2)
错误只是说您需要先声明一个模块,然后才能使用它。您可以一步完成这两项工作:
declare module initializers {
export function setUpHome(): void;
}
如果您使用的是ECMAScript 5,那也是个好主意to turn strict mode
on。此外,请记住,自TypeScript 1.5以来内部模块是命名空间,然后将其声明为命名空间是个好主意。来自TypeScript doc的报价:
关于术语的说明:在TypeScript中注意这一点非常重要 1.5,命名法已经改变。 “内部模块”现在是“命名空间”。 “外部模块”现在只是“模块”。
总结一下,我会这样做:
declare namescpace initializers {
'use strict';
export function setUpHome(): void;
}
答案 1 :(得分:2)
我的最终目标是执行一些初始化代码 aurelia项目中的materialize-css。我有一个相关的问题 在这件事上,但它从未解决过。问题如下: 我正在使用打字稿,到目前为止还无法执行 功能如:
$('滑块&#39)。滑块
实际上,打字稿没有理由阻止你这样做。难以理解您遇到的问题,因为"无法执行"需要更多信息(如错误信息)进行诊断。
我的猜测是你的意思是VSCode / Visual Studio正在给你" red squigglies。"如果是这种情况,这只意味着没有安装打字机。如果您熟悉typings cli,那么您只需要安装实体化类型:
\1
修改强>
在评论中,您突出显示了一条新的错误消息,实际上代表了一个完全不同的问题。
错误TS2339:属性'滑块'类型' ElementFinder上不存在。
这意味着代码中的typings install dt~materialize-css --global --save
是Protractor,而不是jQuery。您需要确保在非测试代码中排除对量角器d.ts的任何引用。我不确定你的量角器类型在哪里,所以你必须搜索它们。如果它们是通过打字安装的:
$