gpt4 book ai didi

angularjs - 使用类或接口(interface)方法的类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:57 25 4
gpt4 key购买 nike

为了给这个问题提供一些上下文,我有一个子组件调用其父组件提供的回调。 这是 AngularJS 中的典型场景。
由于我使用的是 TypeScript,我想在子组件中强类型回调

这是没有任何强类型的初始状态:

class ParentComponentController {
public parentMethod(param1: number, param2: string): boolean {
return param1 > 0 && param2.length > 2;
}
}

class ChildComponentController {
constructor(private parentMethod: Function) {}

public onCertainTrigger() {
this.parentMethod(10, 'something');
}
}

这就是我实现强类型的方法,但它看起来很乱:

declare type parentMethod = (param1: number, param2: string) => boolean;

interface ICommonApi {
parentMethod: parentMethod;
}

class ParentComponentController implements ICommonApi {
public parentMethod(param1: number, param2: string): boolean {
return param1 > 0 && param2.length > 2;
}
}

class ChildComponentController {
constructor(private parentMethod: parentMethod) { }

public onCertainTrigger() {
this.parentMethod(10, 'something');
}
}

理想情况下,我将其设想为一条线。这样的事情可能吗?

class ParentComponentController   {
public parentMethod(param1: number, param2: string): boolean {
return param1 > 0 && param2.length > 2;
}
}

class ChildComponentController {
// This results in an error
constructor(private parentMethod: ParentComponentController.parentMethod) {}

public onCertainTrigger() {
this.parentMethod(10, 'something');
}
}

最佳答案

在这里。

class ParentComponentController {
public parentMethod(param1: number, param2: string): boolean {
return param1 > 0 && param2.length > 2;
}
}

class ChildComponentController {
constructor(private parentMethod: typeof ParentComponentController.prototype.parentMethod) {}

public onCertainTrigger() {
this.parentMethod(10, 'something');
}
}

关于angularjs - 使用类或接口(interface)方法的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43434978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com