打字稿 - 内联函数没有得到检查类型安全

打字稿 - 内联函数没有得到检查类型安全

问题描述:

我是新来的打字稿,并试图几件事打字稿 - 内联函数没有得到检查类型安全

其中功能需求数量的参数,如布尔返回值。

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

+0

不是一个真正的答案,但如果指定了inline函数的返回类型它产生一个错误:'哪里(数据,函数(item:number):number {return item;});'...但是如果你不这样做。 – JcFx 2013-05-09 13:37:01

+0

[CodePlex](https://typescript.codeplex.com/workitem/1021)上记录的错误 – 2013-05-09 14:45:00

+0

这些示例针对0.8.3版 – 2013-05-11 06:39:30

根据在codeplex上收到的意见,情况2和3都是错误。

  1. 案例2固定在0.9.0版本
  2. 案例3正在调查

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

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

只有我东拉西扯 也许除非你分配给一个变量或命名函数类型不是推断。这个分配应该在我们调用一个函数的时候进行(因为你正在给一个参数赋值),但是类型推断并没有在这个位上踢脚。