2015-12-31 36 views
7

tôi đang cố gắng để tạo ra ví dụ từ chung chung kiểu T ví dụ,Nhận constructor/Ví dụ từ loại generic trong nguyên cảo

class Factory { 
    public static generate<T>(): T { 
     return new T(); 
    } 
} 

Nhưng kể từ T chỉ là một loại không constructor, chúng ta không thể làm việc đó đi.

Không thể tạo một cá thể từ kiểu chung trong TypeScript?

Tôi cũng đã đọc những bài viết này nhưng không thể tìm thấy giải pháp.

+0

trùng lặp có thể xảy ra của [Làm thế nào để tạo ra một đối tượng mới từ loại tham số trong lớp chung trong nguyên cảo?] (http://stackoverflow.com/questions/17382143/how-to-create-a-new-object-from-type-parameter-in-generic-class-in-typescript) – Louis

Trả lời

10

Các loại thông tin được sử dụng trong nguyên cảo được xóa trước khi thời gian chạy, vì vậy thông tin về T không có sẵn khi bạn thực hiện cuộc gọi đến new T().

Đó là lý do tại sao tất cả các giải pháp thay thế phụ thuộc vào các nhà xây dựng được thông qua, chẳng hạn như với this example of creating a class dynamically:

interface ParameterlessConstructor<T> { 
    new(): T; 
} 

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

class Creator<T> { 
    constructor(private ctor: ParameterlessConstructor<T>) { 

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

var creator = new Creator(ExampleOne); 

var example = creator.getNew(); 
example.hi(); 
Các vấn đề liên quan