By default, ClearScript exposes a host member's declared type rather than its runtime type. This is important for correct method binding, among other things. The C# compiler does just the same (of course, it doesn't even know what the runtime type will be),
and that's why you need the runtime cast to access the derived class members.

ClearScript's HostFunctions class allows you to perform the same cast in script: