заготовки для урока по ФП#24
Conversation
| return new Error(`${key} is required`); | ||
| }; | ||
|
|
||
| // export class Validator { |
There was a problem hiding this comment.
Точно нужны такие большие закомментированные куски?
There was a problem hiding this comment.
Да, там кроется логика для второй валидации которую они делают самостоятельно
There was a problem hiding this comment.
поставь тогда пометку плиз, чтобы не забыть зачем, будет удобно
| return !isValid; | ||
| } | ||
|
|
||
| checkIsNotEmpty(key: string) { |
There was a problem hiding this comment.
Потенциальный баг Boolean(0) === false
Все таки стоит сделать более явно, можно с помощью ramda
import { is, isNil, isEmpty } from 'ramda'
//...
const value = this.values[key];
if (is(Boolean, value)) {
this.errors[key] = undefined
return
}
if (isEmpty(value) || isNil(value)) {
this.errors[key] = new Error(`${key} is required`);
}There was a problem hiding this comment.
Ну как вот эта проверка это и делает typeof value !== "number" && typeof value !== "boolean"
There was a problem hiding this comment.
Boolean(0) === false явно не обрабатывается
ну и мне пришлось потратить много времени, чтобы понять все кейсы обрабатываемые этой строчкой и додебажить в голове до бага. Являюсь сторонником явных подходов, они и читаются лучше и ошибиться сложнее
There was a problem hiding this comment.
В том числе я за явные преобразования типов, !!string и прочее очень смущают
There was a problem hiding this comment.
переписал на явный switch
0f11f17 to
6ebe6fb
Compare
6ebe6fb to
84551d8
Compare
nickovchinnikov
left a comment
There was a problem hiding this comment.
Прошу обратить внимание на комменты
No description provided.