从泛型类中的类型参数创建新对象

哈维尔·罗斯

我正在尝试在我的通用类中创建一个类型参数的新对象。在我的课程中View,我有2个作为类型参数传递的泛型类型对象列表,但是当我尝试制作时new TGridView(),TypeScript说:

找不到符号'TGridView

这是代码:

module AppFW {
    // Represents a view
    export class View<TFormView extends FormView, TGridView extends GridView> {
        // The list of forms 
        public Forms: { [idForm: string]: TFormView; } = {};

        // The list of grids
        public Grids: { [idForm: string]: TGridView; } = {};

        public AddForm(formElement: HTMLFormElement, dataModel: any, submitFunction?: (e: SubmitFormViewEvent) => boolean): FormView {
            var newForm: TFormView = new TFormView(formElement, dataModel, submitFunction);
            this.Forms[formElement.id] = newForm;
            return newForm;
        }

        public AddGrid(element: HTMLDivElement, gridOptions: any): GridView {
            var newGrid: TGridView = new TGridView(element, gridOptions);
            this.Grids[element.id] = newGrid;
            return newGrid;
        }
    }
}

我可以从通用类型创建对象吗?

芬顿

因为已编译的JavaScript删除了所有类型信息,所以您不能使用它T来创建对象。

您可以通过将类型传递给构造函数来以非泛型方式进行操作。

class TestOne {
    hi() {
        alert('Hi');
    }
}

class TestTwo {
    constructor(private testType) {

    }
    getNew() {
        return new this.testType();
    }
}

var test = new TestTwo(TestOne);

var example = test.getNew();
example.hi();

您可以使用泛型来扩展此示例以加强类型:

class TestBase {
    hi() {
        alert('Hi from base');
    }
}

class TestSub extends TestBase {
    hi() {
        alert('Hi from sub');
    }
}

class TestTwo<T extends TestBase> {
    constructor(private testType: new () => T) {
    }

    getNew() : T {
        return new this.testType();
    }
}

//var test = new TestTwo<TestBase>(TestBase);
var test = new TestTwo<TestSub>(TestSub);

var example = test.getNew();
example.hi();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建对象泛型类

来自分类Dev

如何使用已知类型作为参数创建具有泛型的泛型类?

来自分类Dev

在泛型类型的泛型类上访问类型参数

来自分类Dev

泛型类中的隐式类型参数

来自分类Dev

从类中获取泛型参数的类型,该类是从泛型接口继承的

来自分类Dev

c#获取泛型类中泛型类型参数的名称

来自分类Dev

如何在泛型类中返回对象的泛型类型?

来自分类Dev

在泛型类隐式类型参数

来自分类Dev

使用类对象作为泛型类型

来自分类Dev

将类型参数作为类型参数的类传递给Java中的泛型方法

来自分类Dev

将类型参数作为类型参数的类传递给Java中的泛型方法

来自分类Dev

如果未指定类型参数,为什么Java泛型原始类会擦除对象的所有泛型?

来自分类Dev

在类中声明类型参数时,Java泛型类型会丢失常量类型

来自分类Dev

类中的getConstructors()中的泛型类型

来自分类Dev

泛型方法和泛型类中的类型推断

来自分类Dev

使用超类作为泛型子类型中的类型参数

来自分类Dev

春天在什么容器创建属于同一个泛型类,但使用不同类型的对象新豆?

来自分类Dev

类型不接受泛型中的参数

来自分类Dev

Haxe中泛型类型参数的构造

来自分类Dev

捕获映射类型中的泛型参数

来自分类Dev

类声明中的泛型类型

来自分类Dev

java类中的多个泛型类型

来自分类Dev

当参数化类型通过层次结构传递时,在Java中创建泛型类型的实例吗?

来自分类Dev

强制泛型类型参数为类类型?

来自分类Dev

从泛型类型类确定方法参数类型

来自分类Dev

Scala:引用类的嵌套类型,它是泛型的类型参数

来自分类Dev

泛型类型,其类型参数是抽象基类

来自分类Dev

泛型java函数使用的“类型参数”的“类类型”

来自分类Dev

使用类的实例获取类的泛型类型参数的数量?

Related 相关文章

  1. 1

    创建对象泛型类

  2. 2

    如何使用已知类型作为参数创建具有泛型的泛型类?

  3. 3

    在泛型类型的泛型类上访问类型参数

  4. 4

    泛型类中的隐式类型参数

  5. 5

    从类中获取泛型参数的类型,该类是从泛型接口继承的

  6. 6

    c#获取泛型类中泛型类型参数的名称

  7. 7

    如何在泛型类中返回对象的泛型类型?

  8. 8

    在泛型类隐式类型参数

  9. 9

    使用类对象作为泛型类型

  10. 10

    将类型参数作为类型参数的类传递给Java中的泛型方法

  11. 11

    将类型参数作为类型参数的类传递给Java中的泛型方法

  12. 12

    如果未指定类型参数,为什么Java泛型原始类会擦除对象的所有泛型?

  13. 13

    在类中声明类型参数时,Java泛型类型会丢失常量类型

  14. 14

    类中的getConstructors()中的泛型类型

  15. 15

    泛型方法和泛型类中的类型推断

  16. 16

    使用超类作为泛型子类型中的类型参数

  17. 17

    春天在什么容器创建属于同一个泛型类,但使用不同类型的对象新豆?

  18. 18

    类型不接受泛型中的参数

  19. 19

    Haxe中泛型类型参数的构造

  20. 20

    捕获映射类型中的泛型参数

  21. 21

    类声明中的泛型类型

  22. 22

    java类中的多个泛型类型

  23. 23

    当参数化类型通过层次结构传递时,在Java中创建泛型类型的实例吗?

  24. 24

    强制泛型类型参数为类类型?

  25. 25

    从泛型类型类确定方法参数类型

  26. 26

    Scala:引用类的嵌套类型,它是泛型的类型参数

  27. 27

    泛型类型,其类型参数是抽象基类

  28. 28

    泛型java函数使用的“类型参数”的“类类型”

  29. 29

    使用类的实例获取类的泛型类型参数的数量?

热门标签

归档