/** * https://netbasal.com/create-a-typed-version-of-simplechanges-in-angular-451f86593003 */ type MarkFunctionProperties = { [Key in keyof Component]: Component[Key] extends Function ? never : Key; }; type ExcludeFunctionPropertyNames = MarkFunctionProperties[keyof T]; type ExcludeFunctions = Pick>; export type NgChanges> = { [Key in keyof Props]: { previousValue: Props[Key]; currentValue: Props[Key]; firstChange: boolean; isFirstChange(): boolean; }; }; export type Changes = { previousValue: T; currentValue: T; firstChange: boolean; isFirstChange(): boolean; }; export {};