打字稿 - 内联函数没有得到检查类型安全
问题描述:
我是新来的打字稿,并试图几件事打字稿 - 内联函数没有得到检查类型安全
其中功能需求数量的参数,如布尔返回值。
function where(items: number[], filter: (item: number) => bool) {
for (var counter = 0; counter < items.length; counter++) {
var item = items[counter];
if (filter(item)) {
console.log(item);
}
}
}
var data = [1, 2, 3, 4];
案例1 - 打字稿给出了一个编译错误
var evenFilter = function (item: number) {
//actual line is item % 2 == 0;
return item;
}
where(data, evenFilter);
案例2 - 使用不正确的返回类型内联函数不会生成编译时错误
where(data, function(item : number){
return item;
});
案例3 - 即使是短手语法不会生成编译时错误
where(data, item => item);
这是一个TypeScript或预期行为的错误?
答
绝对是一个错误。显然匿名函数没有被类型检查。分配给变量/命名函数的函数是。您可以在这里打开一个错误报告:https://typescript.codeplex.com/workitem/list/basic
我通过存储库搜索,找不到类似的错误报告。
只有我东拉西扯 也许除非你分配给一个变量或命名函数类型不是推断。这个分配应该在我们调用一个函数的时候进行(因为你正在给一个参数赋值),但是类型推断并没有在这个位上踢脚。
不是一个真正的答案,但如果指定了inline函数的返回类型它产生一个错误:'哪里(数据,函数(item:number):number {return item;});'...但是如果你不这样做。 – JcFx 2013-05-09 13:37:01
[CodePlex](https://typescript.codeplex.com/workitem/1021)上记录的错误 – 2013-05-09 14:45:00
这些示例针对0.8.3版 – 2013-05-11 06:39:30