import { Property } from "./Property"; interface Comparable { equals( other:T ):boolean } export class ComparableProperty > extends Property { 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 ); } }