DT
interface FirstSimpleChange<T> extends SimpleChange {
readonly previousValue: undefined;
readonly currentValue: T;
readonly firstChange: true;
isFirstChange(): true;
}
interface SubsequentSimpleChange<T> extends SimpleChange {
readonly previousValue: T;
readonly currentValue: T;
readonly firstChange: false;
isFirstChange(): false;
}
type TypedSimpleChange<T> = FirstSimpleChange<T> | SubsequentSimpleChange<T>;
export type TypedChanges<Class, InputProps extends keyof Class> = {
[Prop in InputProps]?: TypedSimpleChange<Class[Prop]>;
};