首页 > 解决方案 > 如何在 TypeScript 中实现类?

问题描述

你能帮我创建类 'MyClass' 类 M 应该是 Newable 并实现 IMyInterface

export interface IMyInterface<A>
{    
    SomeData : A;
}  

export class MyClass<T,M inherits IMyInterface<T> and new() >
{
    list = new Array<M>();

    privete Creator()
    {
        const      obj = new M();
                   obj.SameData = 'Hello data';  
        list.push( obj );
    }
 }

标签: typescript-generics

解决方案


认为你正在寻找这样的东西......

export interface IMyInterface<A> {
  SomeData: A;
}  

export class MyClass<T, M extends IMyInterface<T>> {
  private list: M[] = [];

  constructor(private constructorFunction: {new(): M; }) {
  }

  public add(item: T): void {
    const obj = new this.constructorFunction();
    obj.SomeData = item;  
    this.list.push(obj);
  }
}

export class MyItem implements IMyInterface<string> {
  public SomeData: string = '';
}

const collection = new MyClass<string, MyItem>(MyItem);
collection.add('Hello data');

我已经调整了您的伪代码,以便它实际编译并执行我认为您在问题中的目标。需要注意的重要一点是,TypeScript 中的类型在运行时没有表示,所以你不能这样做new T()。相反,您需要传入类型为{ new(): M; }. 然后,您可以new X()使用此值来获取扩展界面的对象。


推荐阅读