【发布时间】:2019-01-27 15:42:48
【问题描述】:
接口Foo有条件类型作为返回类型时如何实现?
interface Foo {
<A, B>(a: A, b: B): A extends B ? string : number
}
const foo: Foo = (a, b) => a === b ? 'str' : 123
编译器产生这个错误:
Type '"str" | 123' is not assignable to type 'A extends B ? string : number'.
Type '"str"' is not assignable to type 'A extends B ? string : number'.
我已经看到this 的问题,但我不知道如何将其翻译为我的示例。另外,我想知道与解决方法相比,官方/正确的方法是什么。
UPD:我在提到的问题中解决了它,但 Unional 的回答确实帮助我理解了这个问题。我是这样解决的:
interface Foo {
<A, B>(a: A, b: B): A extends B ? string : number
<A, B>(a: A, b: B): string | number
}
【问题讨论】:
-
发布一个答案,看看是否有帮助。如果您正在寻找实际的实现细节,我建议您将类型与实现一起定义。由于您的实现是虚拟代码,我无法帮助您找出问题所在。
-
@unional 嗨,非常感谢!我正在消化你的回答。即使我的实现是虚拟代码,它仍然与真实的基本相同,但简化了。
标签: typescript typescript-typings