I’m writing rescript-vitest. I’ve realized that I don’t write a binding for expect(...).toBeInstanceOf method.
I used instanceof check sometimes in ReScript projects, like when I was writing encoder, I did:
switch object->Js.Types.classify {
| JSObject(object) if %raw(`object instanceof Uint8Array`) => { ... }
}
But this time I need it for a random constructor.
I just want to make it clear that toBeInstanceOf is not needed in most ReScript projects. However, it can be useful in self-testing of some JS interop or binding projects.
ex)
expect(myReScriptEncoder(...)).toBeInstanceOf(???);
And I think the most correct way to get a constructor in scope is to refer to this.
@val external this: {..} = "this" // or
@val external globalThis: {..} = "globalThis"
expect(myReScriptEncoder(...)).toBeInstanceOf(Js.globalThis["Uint8Array"]);
If folks agree this can be useful, I will make a PR to add this to the Js Module.