【发布时间】:2015-01-07 11:43:43
【问题描述】:
函数compose 可以有一个对象或对象数组作为其参数。
在compose 中,类型保护区分对象和数组。这
函数mapper 只能处理对象,并且通过使用类型保护,只能处理对象。
interface Link {
something: string;
}
function compose(link: Link|Link[]) {
if (link instanceof Array) {
R.map(function(l) {
return mapper(l);
}, link);
} else {
return mapper(link);
}
}
function mapper(link: Link) {
return link;
}
编译这个例子会报错:
错误 TS2345:'Link | 类型的参数Link[]' 不可分配给“Link”类型的参数
这个错误是可以理解的,因为 mapper 将联合类型作为其参数,但只需要一个对象。这不是我在使用类型保护时所希望的。对此有什么想法吗?
【问题讨论】:
-
你可以做一个 tsc --version 并报告你正在使用的版本吗?
-
消息 TS6029:版本 1.4.0.0
标签: typescript