如何在angular5服务中创建具有泛型类型的新实例

时间:2018-09-19 16:56:25

标签: angular typescript

我需要在angular5服务中创建一个具有通用类型的新实例。
请检查以下代码。

@Injectable()
export class LookupService {
  duplicate<T>(lookup: T) {
    const temp = new T(lookup);
    return temp;
  }
}

但是它不起作用。 我已经尝试了一天的解决方案,但还找不到。

谢谢

1 个答案:

答案 0 :(得分:0)

您关闭了正确的用法:

@Injectable()
export class LookupService {
    // You need also a reference to the class to create a new object
    duplicate<T>(lookup: T, clazz: { new(): T }) {
        const temp = new clazz();
        // Set some values of lookup to temp
        return temp;
    }
 }

样品分类

export class SampleClass {

    constructor() {
        // Some attributes
    }

}

在服务或组件中的某处,您将像这样调用duplicate方法:

const obj: SampleClass = new SampleClass();
// Call the method with the object to clone and its class
this.lookupService.duplicate(obj, SampleClass);

如果“不知道”对象的类,则可以使用lodash之类的库的clone方法。