无法扩展导入的类

时间:2018-12-12 12:54:40

标签: flowtype

class A {}
class B extends A {}

上面的代码可以正常工作,但是当我尝试对导入的类进行相同操作时,我将无法正常工作。

declare module 'a' {
  declare export class A {}
}

import typeof { A } from 'a';

class B extends A {}
  

无法从值位置引用类型A [1]

任何人都可以解决吗?

https://flow.org/try/#0CYUwxgNghgTiAEBbA9sArhBByKX4G8AoeeUSWBEADwAdkYAXecgZxfgEECBfQ3wgJaI6jeAwCeNEMgBmBTvG4ACmTGSJ4OLAG5ChVuwBC8agxAA7YOy75uQA

1 个答案:

答案 0 :(得分:1)

定义一个类时,实际上定义了一个类型和一个Javascript类,并且它们都具有相同的名称。类型仅在编译时存在-它们没有运行时表示形式。在您的示例中,您导入了类型,但未导入运行时值。

 // imports the type only
import typeof { A } from 'a'

 // imports both the type and the runtime value
import { A } from 'a'

该类型通知Flow为了进行类型检查而该类做什么。但是运行时值是定义要执行的实现的值。编译后的程序必须具有对运行时值的引用,以实例化或扩展类。换句话说,删除typeof关键字,它应该可以工作。