实现变量也是方法的接口
Implement interface where variable is also a method
如何实例化此类接口 (d.ts
)?
export interface IReply {
<T>(err: Error, result?: string | number | boolean | Buffer | stream.Stream | IPromise<T> | T, credentialData?: any): IBoom;
<T>(result: string | number | boolean | Buffer | stream.Stream | IPromise<T> | T): Response;
continue(credentialData?: any): void;
//...
}
目标是调用此函数(hapi
处理程序函数):
static healthcheck: ISessionHandler = (request: Request, reply: IReply): void => {
reply({healthy: true});
};
以这种方式:
HealthcheckController.healthcheck(request, (reply) => {
console.log('reply : ' + reply);
});
如果我删除输入要求,这一切都有效 -> 有效 JavaScript。但似乎无法让它在 TypeScript 中工作。它在 tsc 上失败了。
我似乎无法实例化允许我使用 TypeScript 成功调用我的 healthcheck
函数的 reply
变量。
您可以按照下面的示例(稍微简化)进行操作:
export interface IReply
{
(result: any): string;
continue(credentialData?: any): void;
}
let healthCheck = (reply: IReply): void =>
{
reply({healthy: true});
};
var f = <IReply>((reply: any) => { console.log("reply: ", reply); return reply; });
f.continue = (credentialData?: any) => { console.log("continue: ", credentialData)};
healthCheck(f);
如何实例化此类接口 (d.ts
)?
export interface IReply {
<T>(err: Error, result?: string | number | boolean | Buffer | stream.Stream | IPromise<T> | T, credentialData?: any): IBoom;
<T>(result: string | number | boolean | Buffer | stream.Stream | IPromise<T> | T): Response;
continue(credentialData?: any): void;
//...
}
目标是调用此函数(hapi
处理程序函数):
static healthcheck: ISessionHandler = (request: Request, reply: IReply): void => {
reply({healthy: true});
};
以这种方式:
HealthcheckController.healthcheck(request, (reply) => {
console.log('reply : ' + reply);
});
如果我删除输入要求,这一切都有效 -> 有效 JavaScript。但似乎无法让它在 TypeScript 中工作。它在 tsc 上失败了。
我似乎无法实例化允许我使用 TypeScript 成功调用我的 healthcheck
函数的 reply
变量。
您可以按照下面的示例(稍微简化)进行操作:
export interface IReply
{
(result: any): string;
continue(credentialData?: any): void;
}
let healthCheck = (reply: IReply): void =>
{
reply({healthy: true});
};
var f = <IReply>((reply: any) => { console.log("reply: ", reply); return reply; });
f.continue = (credentialData?: any) => { console.log("continue: ", credentialData)};
healthCheck(f);