• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何解决这个“构造函数不能在对象类型上调用”错误的流程?

flowtype 来源:Richard 6次浏览

我很难找出流量抱怨的问题。我试图通过存储实现类来允许实现一个API,然后再实例化它,但是,当我呼叫new this.implKlass说“构造函数不能在对象类型上调用”时,流程投诉。试图告诉我什么是流程,以及我在概念上缺少流程的工作原理?如何解决这个“构造函数不能在对象类型上调用”错误的流程?

实施例下面的代码,和flow try code这里

/* @flow */ 

type ApiT = { 
    fnA(): Promise<*>; 
} 

// An implementation of the API 
class Impl { 
    async fnA(): Promise<*> { return 1; } 
} 

class DoThings { 
    implKlass: ApiT; 
    constructor(klass) { 
     this.implKlass = klass; 
    } 
    callA() { 
     const Klass = this.implKlass; 
     const inst = new Klass(); 
     return inst.fnA(); 
    } 
} 

new DoThings(Impl).callA(); 

输出示例:

18:   const inst = new Klass(); 
         ^constructor call. Constructor cannot be called on 
18:   const inst = new Klass(); 
          ^object type 
13:  constructor(klass: ApiT) { 
         ^property `fnA`. Property not found in 
23: new DoThings(Impl).callA(); 
       ^statics of Impl 


===========解决方案如下:

有了一个小的修改工作的。

class DoThings { 
    implKlass: Class<ApiT>; 
    constructor(klass) { 
     this.implKlass = klass; 
    } 
    callA() { 
     const Klass = this.implKlass; 
     const inst = new Klass(); 
     return inst.fnA(); 
    } 
} 

的错误是你写ApiT而不是Class<ApiT>ApiT将是类的一个实例,而Class<ApiT>是类本身。

Try flow link


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)