可以使用代表许多类型类型的类型?

问题描述 投票:0回答:1
许多类都实现了特定接口

Class<Bird> | Class<Snake>

。我需要能够指定,假设一个函数接受类型
Animal

的值,而这些值是实现

T

classes

。也就是说,如果我在函数中调用
Animal
(如下面的代码段中),其返回类型将为
return new c();,该类的实例,该类实现了T
;
;
;
目前,我遇到了这个错误。但是我尝试了许多其他方法:类型断言,带有相交操作员等的对象类型等。这些方法也不起作用。
Animal
这有可能吗?即使是在这个特定的地方跳过以某种方式进行检查。

我当前的解决方案是忽略该错误。 我的结论是,在这种情况下,它不仅是合理的,而且是正确的方法。因为

流文档明确地提到了该流量,因此不会期望处理所有可能的语法构造(听起来很合理,因为它的主要好处似乎是在应用程序的各个部分之间静态定义某些“合同”,而不是类型的“静态运行时”引擎。
流为许多常见的编程错误报告了许多不同类型的错误,但并非每个JavaScript模式都可以通过流量来理解。

因此,就我而言,我刚刚添加了评论并声明了返回类型:
flowtype
1个回答
0
投票
//@flow strict interface Animal { eat(): void, } class Dog implements Animal { constructor() { } eat() { } bark() { } } foo(Dog); function foo(c: Class<Animal>) { return new c(); ■ Cannot call `c` because property `constructor` is missing in `Animal` [1]. }

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.