Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript-未检查内联函数的类型安全性_Typescript - Fatal编程技术网

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

TypeScript-未检查内联函数的类型安全性,typescript,Typescript,我刚开始打字,尝试的东西很少 其中函数要求number参数和bool作为返回值 function where(items: number[], filter: (item: number) => bool) { for (var counter = 0; counter < items.length; counter++) { var item = items[counter]; if (filter(item)) {

我刚开始打字,尝试的东西很少

其中函数要求number参数和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];
案例2-返回类型不正确的内联函数不会生成编译时错误

where(data, function(item : number){
    return item;
});
where(data, item => item);
案例3-即使是简写语法也不会生成编译时错误

where(data, function(item : number){
    return item;
});
where(data, item => item);

这是TypeScript的bug还是预期行为?

肯定是bug。显然,匿名函数没有进行类型检查。分配给变量/命名函数的函数为。您可以在此处打开错误报告:

我搜索了存储库,没有找到类似的bug报告

只是我在闲逛
除非指定变量或函数名,否则可能不会推断类型。这个赋值应该发生在我们调用一个函数的时候(当你给一个参数赋值的时候),但是类型推断并没有对那个位起作用

根据收到的评论,案例2和案例3都是bug

  • 案例2在版本0.9.0中已修复
  • 案件3正在调查中

  • 不是真正的答案,但如果指定内联函数的返回类型,则会生成错误:
    where(数据,函数(项:编号):number{return item;})。。。但如果您不这样做,则不会。这些示例中记录的bug是针对0.8.3版的