class Foo1 {
a: number = 42
}
class Foo2 {
a: string = "foobar"
}
type Format = "foo1" | "foo2"
function foo(format: Format) {
if (format === "foo1") return new Foo1();
return new Foo2()
}
const f = foo("foo1");
这里,f被推断为Foo1
或Foo2
,即使我知道它严格地是Foo1
。
是否可以在foo
中编写一些泛型注解来帮助它推断返回类型?
2条答案
按热度按时间c9qzyr3d1#
您可能希望在这里使用重载,其中每个选项都有一个函数签名,并且显式设置了该选项的返回类型。
见Playground
c86crjj02#
我的错,这并不难:
注意,如果我想让类型处理
Format
类型(比如“foo1”或“foo2”,比如变量),我必须添加另一个覆盖签名: