TypeScript交集类型的函数

时间:2016-11-26 15:34:08

标签: typescript typescript2.0

交叉类型的函数类型的行为与我期望的不同。拿这个样本:

var c: ((x: number) => void) = x => { };

这个编译得很好。 x是lambda中的数字。

但这失败了:

var c: ((x: number) => void) & ((x: number | string) => void) = x => { };

它说“x含有'任意'类型”。 (使用--noExplicitAny进行编译。)

即便是同样的评论也失败了:

var c: ((x: number) => void) & ((x: number) => void) = x => { };

这意味着并非所有类型TT & T都与T相同,这真的很奇怪。

1 个答案:

答案 0 :(得分:1)

我认为类型交叉不是以这种方式使用的。可能是编译器无法计算x的类型并且因为编译器选项而分配任何失败的。

为x本身定义多个类型也更加清晰,而不是加入两个函数的类型。

var c: ((x: number | string) => void)  = x => { };
相关问题