Typescript 如何使用函数数组?
在下面的代码中,Typescript 如何使用函数数组?,typescript,Typescript,在下面的代码中,onResizeWindowHandles具有类型any,但必须是函数数组: export default class PageLayoutManager { private $Window: JQuery<Window>; private onResizeWindowHandlers: any; constructor () { this.$Window = $(window); this.handleWindowResize();
onResizeWindowHandles
具有类型any
,但必须是函数数组:
export default class PageLayoutManager {
private $Window: JQuery<Window>;
private onResizeWindowHandlers: any;
constructor () {
this.$Window = $(window);
this.handleWindowResize();
this.onResizeWindowHandlers = new Array();
}
public addWindowOnResizeHandler(newHandler: any): void {
this.onResizeWindowHandlers.push(newHandler);
}
private handleWindowResize(): void {
this.$Window.on('resize', () => {
this.onResizeWindowHandlers.forEach(handlerFunction => {
handlerFunction();
})
});
}
}
导出默认类PageLayoutManager{
私有$Window:JQuery;
私有OnResizeWindowHandler:任意;
构造函数(){
此.$Window=$(Window);
此.handleIndowerSize();
this.onResizeWindowHandlers=新数组();
}
public addWindowOnResizeHandler(newHandler:any):void{
this.onResizeWindowHandlers.push(newHandler);
}
私有HandleIndowerSize():void{
此.$Window.on('resize',()=>{
此.onResizeWindowHandlers.forEach(handlerFunction=>{
handlerFunction();
})
});
}
}
如何正确设置大小调整窗口句柄的类型
您可以将数组类与泛型中的函数类一起使用,如下所示:
private onResizeWindowHandlers: Array<Function>;
私有onResizeWindowHandler:数组;
以下是使用类型别名键入函数的语法
type MyFunc = (arg1: number, arg2: string) => boolean
或者,作为接口:
interface MyFunc {
(arg1: number, arg2: string): boolean
}
两者都可以,但我更喜欢别名类型。它更简洁易读
在您的例子中,()=>void
可能是最合适的,因为函数是在没有参数的情况下调用的,并且返回类型是未使用的
type ResizeHandler = () => void
export default class PageLayoutManager {
private onResizeWindowHandlers: ResizeHandler[]
constructor () {
this.onResizeWindowHandlers = [] // as an aside, use `[]` instead of `new Array()`
}
public addWindowOnResizeHandler(newHandler: ResizeHandler): void {
this.onResizeWindowHandlers.push(newHandler)
}
}
类型
函数在这里也可以工作,但它基本上与(…args:any[])=>any
,这不是非常安全的类型,通常应该避免使用。非常简洁的解决方案!非常感谢。