Safe downcasting

The as operator returns null when a dynamic cast fails. You can use it combined with IsDefined to perform safe downcasts. The following example shows how you can safe downcast a VehicleObject to a WheeledObject, a CarObject or a BikeObject:

let vehicle: ref<VehicleObject>;

let wheels = vehicle as WheeledObject;
if IsDefined(wheels) {
  // vehicle is known to be a WheeledObject.
}

let car = vehicle as CarObject;
if IsDefined(car) {
  // vehicle is known to be a CarObject.
}

let bike = vehicle as BikeObject;
if IsDefined(bike) {
  // vehicle is known to be a BikeObject.
}

as operator will keep the same kind of reference, that is ref<T> to ref<U> and wref<T> to wref<U>.

Last updated