Typescript Lambda属性不是函数

时间:2018-07-31 18:14:03

标签: typescript

我是打字稿新手,我正在尝试使用别人的pluginI have reached向他们求助,但我不确定可能需要多长时间。回购协议一年多来没有更新。

我正在尝试创建一个定义为的NotyButton:

interface NotyButton {
new(text: string, 
    classNames: string, 
    cb: Function, 
    attributes: any): NotyButton
}

NotyButton在NotyOptions中使用:

export interface NotyOptions {
type?: NotyType;
layout?: NotyLayout;
theme?: NotyTheme;
text?: string;
timeout?: false | number;
progressBar?: boolean;
closeWith?: ('click' | 'button')[];
animation?: {
    open?: string | null | Function,
    close?: string | null | Function
};
id?: false | string;
force?: boolean;
killer?: boolean | string;
queue?: string;
container?: false | string;
buttons?: NotyButton[],
callbacks?: {
    beforeShow?: () => void,
    onShow?: () => void,
    afterShow?: () => void,
    onClose?: () => void,
    afterClose?: () => void,
    onHover?: () => void,
    onTemplate?: () => void
};
sounds?: {
    sources?: string[],
    volume?: number,
    conditions?: string[]
};
docTitle?: {
    conditions?: string[]
};
modal?: boolean,
}

NotyModel类中有一个静态方法,该方法公开一个使用lambda表达式返回NotyButton的button属性(如果我正确阅读的话)。我相信这就是我的问题所在。

class NotyModel {
    static button: (text: string, classNames: string, cb: Function, attributes?: any) => NotyButton;
}

我必须在NgNoty类的create方法中将NotyOptions对象用作参数:

declare let Noty: any;

@Injectable()
export class NgNoty {

create(options: NotyOptions): NotyModel {
    return new Noty(options);
}

closeAll(name?: string) {
    Noty.closeAll(name);
}

setMaxVisible(count: number, name?: string) {
    Noty.setMaxVisible(count, name);
}
}

我有一个组件创建,试图像这样使用NgNoty的创建方法:

    this.noty.create(<NotyOptions>{
    text: 'Problems Encountered',
    layout: 'bottomRight',
    theme: 'bootstrap-v4',
    type: 'error',
    buttons: [ 
      NotyModel.button('Ok', 'btn', () => {}, null)
    ]
}).show();

当我使用NotyModel.button时,得到的是 NotyModel.button不是函数

1 个答案:

答案 0 :(得分:0)

看来ng-noty的作者可能忘记了实现NotyModel.button。我尝试在this fork中实现它,但是我不熟悉如何测试它。尝试一下,如果它对您有用,我们中的一个可以提交拉取请求。 (请参阅this answer,了解我将npm软件包的本地修改版本添加到您的应用程序中的首选技术。)