It's a feature. The type definitions for functions are there to make it mandatory that certain values be passed in. It does not make it mandatory that the function actually do something with it.
This is done because it's actually pretty common in javascript to ignore some of the things you were passed in. For example, consider this array.map usage:
const smallNumbers = [1, 2, 3];
const bigNumbers = smallNumbers.map((value: number) => value * 10);
I've passed in a mapping function that takes in a number and returns another number. This code should be treated as ok, since it's a standard way to use map, but map will actually pass 3 arguments into my function, not just one. It would be a pain if i had to explicitly write those extra parameters, even though i have no intention of using them:
const bigNumbers = smallNumbers.map((value: number, index: number, array: number[]) => value * 10);
You can read more about this here