Whilst fixing the typing problems in the test suite, I found a seemingly redundant test for the first operator:
it('should support type guards without breaking previous behavior', () => {
first does not accept a used-defined type guard, so the test does nothing. Indeed, it will fail once type checking is enabled for the test suite.
Whether or not the test should be removed or the signature of first should be modified to accept a user-defined type guard, I don't know. Hence the opening of this issue.