Size: a a a

2021 April 02

AR

Alexey Raspopov in Frontend UA
Просто не ожидай нулабл 🤷‍♂️
источник

DD

Dmytro Dovhan in Frontend UA
ну это хорошо работает когда пишешнь на TS с нуля, а не переводишь существующую кодовую базу на TS )
источник

EO

Eugene Obrezkov in Frontend UA
Dmytro Dovhan
синтетический пример

        const multiplyByTwo = (value?: number): number | undefined => {
           if (isPresentValue(value)) {
               return value * 2;
           }

           return value;
       };

хотелось бы что бы внутри ифа value было только  number а не number | undefined
if (typeof value !== 'undefined') ?
источник

AR

Alexey Raspopov in Frontend UA
Eugene Obrezkov
if (typeof value !== 'undefined') ?
value != null
источник

AR

Alexey Raspopov in Frontend UA
Чтоб проще и наверняка
источник

AK

Alexander Kuzmenko in Frontend UA
Eugene Obrezkov
if (typeof value !== 'undefined') ?
if (undefined) throw Error ))
источник

DD

Dmytro Dovhan in Frontend UA
Alexander Kuzmenko
if (undefined) throw Error ))
такое уже есть и норм работает где надо, нужен именно булин )
источник

AK

Alexander Kuzmenko in Frontend UA
Dmytro Dovhan
такое уже есть и норм работает где надо, нужен именно булин )
Не нужен
источник

DD

Dmytro Dovhan in Frontend UA
ок
источник

AR

Alexey Raspopov in Frontend UA
Dmytro Dovhan
ну это хорошо работает когда пишешнь на TS с нуля, а не переводишь существующую кодовую базу на TS )
Тогда ты должен понимать что таким образом в тс код втягиваешь дурные практики старого кода, вместо их исправления. Хз, как по мне, в таком случае рефакторинг бесполезный
источник

AL

Andrey Listochkin in Frontend UA
Alexander Kuzmenko
if (undefined) throw Error ))
if (value != null) window.close()
источник

AK

Alexander Kuzmenko in Frontend UA
Вообще ничего не должно ни возвращать ни принимать null или undefined
источник

DD

Dmytro Dovhan in Frontend UA
ага, и живем мы в чисто функциональном мире без эффектов
источник

AR

Alexey Raspopov in Frontend UA
Прекрасный мир, присоединяйся
источник

AK

Alexander Kuzmenko in Frontend UA
Dmytro Dovhan
а может кто в курсе есть ли способ сделать тайп предикат на то что значение NonNullable в TS
я знаю что можно сделать assertion функцию на присуствие значения, и знаю что можно сделать предикат на конкретное значение
но мне надо что то по середине

export function isPresentValue<T>(value: any): value is NonNullable<T> {
   return value !== undefined && value !== null && value !== '';
}

что то в таком духе, но что бы корректно работало )
Конкретно в данном случае если тебе нужно несколько проверок то лучше сделать несколько методов
источник

EO

Eugene Obrezkov in Frontend UA
Alexander Kuzmenko
Вообще ничего не должно ни возвращать ни принимать null или undefined
ммм, soundness, я тоже живу в этих мечтах
источник

EO

Eugene Obrezkov in Frontend UA
но не в этой отрасли, к сожалению
источник

EO

Eugene Obrezkov in Frontend UA
Dmytro Dovhan
такое уже есть и норм работает где надо, нужен именно булин )
strict: true в tsconfig.json
если переводишь с жс, то лучше по отдельности strictNullChecks: true и потихоньку покрывать всякими != null != undefined typeof etc
источник

EO

Eugene Obrezkov in Frontend UA
он даст тебе бул и охранники не нужны)
источник

DD

Dmytro Dovhan in Frontend UA
Eugene Obrezkov
strict: true в tsconfig.json
если переводишь с жс, то лучше по отдельности strictNullChecks: true и потихоньку покрывать всякими != null != undefined typeof etc
strict есть да
источник