Если value
равно null
или undefined
, вторая if
выдаст ошибку, сообщающую, что вы не можете получить доступ к length
из null
/ undefined
.
Первый предотвращает это, поскольку он будет иметь доступ к value.length
, только если value
правдив. В противном случае первое условие (!value
) будет выполнено, поэтому второе (value.length < 1
) даже не будет оцениваться.
const arr1 = null;
const arr2 = [];
// Satisfies first condition:
if (!arr1 || arr1.length < 1) console.log('No values in arr1.');
// Satisfies second condition:
if (!arr2 || arr2.length < 1) console.log('No values in arr2.');
// Breaks:
if (arr1.length < 1) console.log('No values in arr1.');
В любом случае, это не спецификация c для TS, это просто, как работает vanilla JS.