library-ts/browser/events/ComparableProperty.ts

27 lines
508 B
TypeScript

import { Property } from "./Property";
interface Comparable<T>
{
equals( other:T ):boolean
}
export class ComparableProperty<T extends Comparable<T> > extends Property<T>
{
isEqual( a:T, b:T )
{
let valueA = a === null ? 0 : a === undefined ? 1 : 2;
let valueB = b === null ? 0 : b === undefined ? 1 : 2;
if ( valueA !== valueB )
{
return false;
}
if ( valueA !== 2 )
{
return true;
}
return a.equals( b );
}
}