27 lines
508 B
TypeScript
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 );
|
|
}
|
|
} |