如果我们在ngOnChanges钩子(Hook)的SimpleChanges typescript 参数中进行当前组件的类型检查,那就太好了。

这样可以防止我们检查的属性出现错误。

最佳答案

使用TypeScript 2.1和keyof功能,我已经找到了以下类型声明(基于SimpleChanges),这些声明似乎使我们能够对Component属性进行必要的类型化访问:

export type ComponentChange<T, P extends keyof T> = {
    previousValue: T[P];
    currentValue: T[P];
    firstChange: boolean;
};

export type ComponentChanges<T> = {
    [P in keyof T]?: ComponentChange<T, P>;
};

使用这些声明,vscode编辑器声明会自动获取类型信息并自动完成更改属性:

angular - ngOnChanges Hook 中的SimpleChanges接口(interface)的类型检查-LMLPHP

但是,一个问题是,changes参数现在将列出组件的每个属性(不仅是@Input()属性),但是我没有找到比这更好的方法了。

10-07 20:08
查看更多