如何创建TypeScript类的实例?

时间:2017-10-07 15:42:04

标签: angular typescript typescript2.0

我有以下课程:

export declare class FlashMessagesService {
    show: (text?: string, options?: Object) => void;
    grayOut: (value: boolean) => void;
}

我尝试创建类的实例:

 import { FlashMessagesService } from 'angular2-flash-messages';
    let _flashMessagesService = new FlashMessagesService();

它会调用错误:

Cannot read property 'show' of undefined

我使用此library

2 个答案:

答案 0 :(得分:1)

我认为你的问题不是打字稿本身,而是使用角度依赖注入以及如何组成组件。

如果您查看正在使用的软件包的源代码,您会看到FlashMessagesComponentnot by FlashMessagesService itself实际实现了show函数。

所以要在没有angular的依赖注入的情况下自己创建它的实例,它会变得棘手,因为你还需要提供一个抽象类ChangeDetectorRef的实例,它本身可能依赖于其他东西,所以它很快就会变得非常混乱。

像下面的代码这样的东西可能会帮助你开始玩它,但它远远不是你想要在现实世界中使用的东西。

import { FlashMessagesService, FlashMessagesComponent } from 'angular2-flash-messages';
let _flashMessagesService = new FlashMessagesService();
let component = new FlashMessagesComponent(_flashMessagesService, { detectChanges: () => {}} );
console.log(_flashMessagesService.show) // [Function show]

编辑:

我在SO上直接编码并且无法测试它(抱歉:(),现在检查它似乎更FlashMessagesComponent it not exported,所以我没有清楚地看到你创建一个实例的方法使用FlashMessagesModule和角度依赖注入生命周期。

答案 1 :(得分:0)

您应该在之前为您的班级创建一个构造函数:

export class Flashmessages { 
    ...
    //other vars
    constructor(){
        this.myvar = "value";
    }
}