Typescript 表示扩展抽象类的类型

Typescript 表示扩展抽象类的类型,typescript,react-native,Typescript,React Native,我有一个抽象类AbstractCharacter,和具体类:soldier和knight,以及许多其他字符 我如何创建接口来说明propcharacter将是一个扩展AbstractCharacter e、 g 使用方法: interface IFormationCharacter { character: T extends AbstractCharacter // this doesn't work because T doesn't exist character: typeof

我有一个抽象类
AbstractCharacter
,和具体类:
soldier
knight
,以及许多其他字符

我如何创建接口来说明prop
character
将是一个扩展
AbstractCharacter

e、 g

使用方法:

interface IFormationCharacter {
  character: T extends AbstractCharacter // this doesn't work because T doesn't exist
  character: typeof AbstractCharacter // this doesn't allow for extending, i.e. new character() will say "Cannot create an instance of abstract class"
}

export default class FormationCharacter extends React.Component<IFormationCharacter> {
  constructor(props: IFormationCharacter) {
    super(props);
接口字符{
character:T扩展AbstractCharacter//这不起作用,因为它不存在
character:typeof AbstractCharacter//这不允许扩展,即new character()将显示“无法创建抽象类的实例”
}
导出默认类FormationCharacter扩展React.Component{
构造函数(道具:IFormationCharacter){
超级(道具);
我知道我可以做
类型的骑士|类型的士兵|类型的…
,但肯定有更好的方法吗

我如何创建接口来表示prop角色将是一个扩展AbstractCharacter的类

您可以使用通用接口:

interface IFormationCharacter<T extends AbstractCharacter> {
  character: T;
}
接口字符{
性状:T;
}
然后,您必须将接口与以下类型参数一起使用:

IFormationCharacter<Knight>
IFormationCharacter<Soldier>
// or keep it generic
export default class FormationCharacter<T> extends React.Component<IFormationCharacter<T>> {
  constructor(props: IFormationCharacter<T>) {
    super(props);
IFormationCharacter
符号化特征
//或者保持它的通用性
导出默认类FormationCharacter扩展React.Component{
构造函数(道具:IFormationCharacter){
超级(道具);
不过,根据您的需要,最好还是使用抽象属性
character:AbstractCharacter

我如何创建接口来表示prop角色将是一个扩展AbstractCharacter的类

您可以使用通用接口:

interface IFormationCharacter<T extends AbstractCharacter> {
  character: T;
}
接口字符{
性状:T;
}
然后,您必须将接口与以下类型参数一起使用:

IFormationCharacter<Knight>
IFormationCharacter<Soldier>
// or keep it generic
export default class FormationCharacter<T> extends React.Component<IFormationCharacter<T>> {
  constructor(props: IFormationCharacter<T>) {
    super(props);
IFormationCharacter
符号化特征
//或者保持它的通用性
导出默认类FormationCharacter扩展React.Component{
构造函数(道具:IFormationCharacter){
超级(道具);

不过,根据您的需要,最好还是坚持使用抽象属性
character:AbstractCharacter

猜测如果不指定具体的类,就无法保持它的通用性?确切地说,您必须在使用此接口的类上携带类型,因此您可能必须坚持使用character:AbstractCharacterGuessing如果不指定具体的类,就无法保持它的通用性?确切地说,您必须在使用此接口的类上携带类型,因此您可能必须坚持使用character:AbstractCharacter