0

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

其中函数需要数字参数和布尔值作为返回值。

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

4

2 回答 2

1

根据在codeplex上收到的评论,案例 2 和 3 都是错误。

  1. 案例 2 在 0.9.0 版本中已修复
  2. 案例3正在调查中
于 2013-05-11T06:39:51.283 回答
1

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

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

只是我漫无边际 也许除非您分配给变量或命名函数,否则不会推断类型。当我们调用函数时也应该进行此分配(因为您正在为参数分配值),但类型推断并未针对该位进行。

于 2013-05-09T14:27:51.430 回答