我希望这可以工作,而不是在流程中输出错误:
/* @flow */
class TreeNode {
root: TreeNode
}
class RootNode extends TreeNode {}
class OtherNode extends TreeNode {
root: RootNode
}
但我获得了:TreeNode. This type is incompatible with RootNode
。 Tho RootNode
延伸TreeNode
我做错了什么?
看到问题答案 0 :(得分:4)
默认情况下,字段和属性是不变的,因为您可以读取和写入它们。您需要将字段标记为协变以允许子类
/* @flow */
class TreeNode {
+root: TreeNode
}
class RootNode extends TreeNode {}
class OtherNode extends TreeNode {
root: RootNode
}
Demo。 Further reading以便更好地理解。