Это говорит компилятору что это значение не может принимать null, в то же время, если мне не изменяет память, target.files не гарантирует что там будет какое нибудь значение. Тут и получается конфликт интересов
Если я не устанавливаю знак восклицания мне нужно указать нужный тип и undefined или инициализировать переменную в конструкторе иначе получаю ошибку. В данном случае в конструкторе я не иниц. переменную потому и установил знак. Правильно ли я Вас понял лучше устанавливать undefined?