Typescript泛型函数不抱怨回调返回类型

时间:2020-02-25 14:03:23

标签: typescript

Typescript泛型函数不会抱怨回调返回类型。它不应该抱怨类型与对象不匹配吗?为什么这是有效的打字稿?

const a = <T>(shape: T | (() => T)): T => {
    return shape instanceof Function ? shape() : shape;
}

const func = () => ({ x: '', o: '' });
a<{ x: string }>(func); // this should fail to compile

a<{ x: string }>({ x: '', o: '' }); // fails to compile

Playground Link

2 个答案:

答案 0 :(得分:0)

这是一个已知的TypeScript错误。需要Github issuefix

找不到合适的解决方法

答案 1 :(得分:0)

上下文类型(在您的情况下为a<{ x: string }>(func);)不会执行过多的属性检查,对此没有任何规范,所以也许是设计使然