TypeScript - 未检查内联函数的类型安全性

时间:2013-05-09 11:51:16

标签: typescript

我是打字稿的新手,并尝试了一些事情

其中函数需要数字参数,bool作为返回值。

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 - TypeScript给出了编译错误

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或预期行为的错误吗?

2 个答案:

答案 0 :(得分:1)

绝对是一个错误。显然,匿名函数未经过类型检查。分配给变量/命名函数的函数是。您可以在此处打开错误报告:https://typescript.codeplex.com/workitem/list/basic

我搜索了存储库,找不到类似的错误报告。

只是我漫无边际 除非您为变量赋值或命名函数,否则可能不会推断类型。这个赋值应该在我们调用一个函数时发生(因为你为一个参数指定了一个值),但是类型推断并没有为那个位而烦恼。

答案 1 :(得分:1)

根据codeplex收到的意见,案例2和案例3都是错误。

  1. 案例2已在0.9.0版本中修复
  2. 案例3正在调查中