Javascript ES6类继承/扩展流类型

Javascript ES6类继承/扩展流类型,javascript,reactjs,flowtype,Javascript,Reactjs,Flowtype,我的流类型如下所示: type ModalTypes{ id: number, name: string } class Modal{ id: number name: string constructor(data: {id: number, name: string}) { super() this.id = data.id this.name = data.name } } 我希望继承类的类型定义,并在构造函数中重用它: class Moda

我的流类型如下所示:

type ModalTypes{
 id: number,
 name: string
}
class Modal{
  id: number
  name: string
  constructor(data: {id: number, name: string}) {
    super()
    this.id = data.id
    this.name = data.name
  }
}
我希望继承类的类型定义,并在构造函数中重用它:

class Modal extends ModalTypes {
  constructor(data: ModalTypes) {
    super()
    this.id = data.id
    this.name = data.name
  }
}
遗憾的是,这不起作用。我知道我只能扩展一个类,但如何才能向类中添加一些类型定义。
我不想像这样编写重复的代码:

type ModalTypes{
 id: number,
 name: string
}
class Modal{
  id: number
  name: string
  constructor(data: {id: number, name: string}) {
    super()
    this.id = data.id
    this.name = data.name
  }
}

这里我添加了两次
id
name
,一次添加到Modal类,一次添加到构造函数
我只想添加一次,以防止重复。

只需将您的类型更改为:

 class ModalTypes {
   id: number,
   name: string
 }

只需将您的类型更改为:

 class ModalTypes {
   id: number,
   name: string
 }

在这个例子中,继承并不是您真正需要的,即使它可能会节省一些输入(没有双关语!)

您可以使用实用程序
$PropertyType
来避免类型不匹配,并至少确保一致性

()

当然,这意味着无论何时您想要访问属性,都需要更多的指法,并且可能不是您想要的对象“自己的属性”。使用后一种方法,您甚至可以使用泛型来创建可重用类,这可能有一些价值

()

类型道具={
身份证号码:,
名称:string
}
类模态{
道具:T
建造师(道具:T){
this.props=props
}
}
const-modal:modal=new-modal({id:1,名称:'bob'})

在本例中,继承并不是您真正需要的,即使它可能会节省一些输入(没有双关语!)

您可以使用实用程序
$PropertyType
来避免类型不匹配,并至少确保一致性

()

当然,这意味着无论何时您想要访问属性,都需要更多的指法,并且可能不是您想要的对象“自己的属性”。使用后一种方法,您甚至可以使用泛型来创建可重用类,这可能有一些价值

()

类型道具={
身份证号码:,
名称:string
}
类模态{
道具:T
建造师(道具:T){
this.props=props
}
}
const-modal:modal=new-modal({id:1,名称:'bob'})

类型只是编译器的一部分。类是传输代码的一部分。因此,您不能将类型用作超类,因为它们在代码中不存在。不要继承以防止重复的属性被继承误用。如果Modal是ModalType,那么应该驱动继承IMHO的是什么。如果是,那么继承是有意义的,但如果不是,那么就不要继承。是的,对@Nope,我不需要继承。但是我想使用相同的类型,而不在类和构造函数中定义它们。我只想在一个地方定义它们。类型只是一个编译器的东西。类是传输代码的一部分。因此,您不能将类型用作超类,因为它们在代码中不存在。不要继承以防止重复的属性被继承误用。如果Modal是ModalType,那么应该驱动继承IMHO的是什么。如果是,那么继承是有意义的,但如果不是,那么就不要继承。是的,对@Nope,我不需要继承。但是我想使用相同的类型,而不在类和构造函数中定义它们。我只想在一个地方定义它们。谢谢,但我只想做一些类型检查,而不引入新类。这可能吗?它不需要是一个超类,类应该只能具有与类型ModalTypes相同的类型(因此它不应该复制构造函数和类中的类型)。谢谢,但是我只想做一些类型检查,而不引入新类。这可能吗?它不需要是一个超类,类应该只能拥有与类型ModalTypes相同的类型(因此它不应该复制构造函数和类中的类型)