Это не ошибка TSLint - это результат вашего tsconfig.json
файла с включенной настройкой strictNullChecks
.Это делает null
недопустимым значением для всех типов, которые явно не утверждают, что они могут быть нулевыми.
Вот пример того, как отличается поведение ( ссылка на игровую площадку ):
let a: string = null; // This fails with strictNullChecks
let b: string | null = null; // This does not
Это означает, что если у вас отключена настройка, каждый Type
фактически обрабатывается так, как если бы он был Type | null | undefined
под капотом!
Итак, почему вы можете захотеть включить функциюкак это на?На первый взгляд это кажется неудобным, но преимущество заключается в том, что он позволяет вам отлавливать ошибки нулевого указателя во время компиляции, а не во время выполнения.
Рассмотрим следующую функцию ( детская площадка ):
function parseCSV(input: string): string[] {
return input.split(","); // If input is null, this will error!
}
Если strictNullChecks
отключено, вы можете позвонить parseCSV(null)
, и вы не получите сообщение об ошибке, пока не выполните код.Если эта опция включена, передача в null приведет к ошибке компиляции!
В идеальном мире (по крайней мере, на мой взгляд!) Это будет по умолчанию, но из-за того, что в существующем большом количестве JavaScript-кода выбрасывается null / undefinedс опрометчивым отказом было решено, что установка должна быть выбрана для совместимости.Если это поведение нежелательно для вас по какой-либо причине, вы можете изменить этот параметр на false
или удалить его из файла конфигурации, чтобы восстановить настройки по умолчанию.