Por que Array.filter (Number) filtra zero em JavaScript?

Estou tentando filtrar todos os elementos não numéricos de uma matriz. Podemos ver a saída desejada ao usar typeof. Mas com Number, ele filtra zero.

Aqui está o exemplo (testado no Chrome Console):

[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(Number)
// Which output with zero filtered out:
[-1, 1, 2, 3, 4]  // 0 is filtered

Se usarmos typeof, ele não filtra zero, o que era esperad

// code
[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(n => typeof n === 'number')
// output
[-1, 0, 1, 2, 3, 4, 0]

Minha pergunta

Qual é a diferença entre as abordagens 'Número' e 'tipo de'?

Número filtra zero, mas o próprio 'Número' literalmente contém zero e isso me confund

questionAnswers(6)

yourAnswerToTheQuestion