169 похожих чатов

Привет. Подскажите, можно ли как-то переделать утилиту из примера выше assert()

так, чтобы она возвращала true/false и при этом так же кидала ворнинг, если результат выражения — false?

Хочу использовать её так:

if (assert(typeof value === "string")) {
console.log(value.toUpperCase());
}

Сейчас TS не даёт использовать функцию внутри if-а:

https://codesandbox.io/s/suspicious-wescoff-8qo1uh?file=/src/index.ts

8 ответов

26 просмотров

так у вас ваш assert ничего не возвращает...

Артур-Байбулатов Автор вопроса
Vasili
так у вас ваш assert ничего не возвращает...

Возвращать значения из такой функции TS тоже не даёт. Говорит результат должен быть void.

Артур Байбулатов
Возвращать значения из такой функции TS тоже не да...

Функция в рантайме всегда возвращает undefined, поэтому проверять в if не имеет особого смысла

Артур-Байбулатов Автор вопроса

Да. Но мне ещё нужно чтобы при каждой такой проверке был ворнинг в консоли ещё. Не хочется в каждом if-е дублировать эти ворнинги.

Артур Байбулатов
Да. Но мне ещё нужно чтобы при каждой такой провер...

function isString(thing: unknown): thing is string { if (typeof thing === "string") { return true } else { console.warn(...) return false } }

Артур-Байбулатов Автор вопроса
decorator-factory
function isString(thing: unknown): thing is string...

Ну тут конкретно проверка на string. А у меня куча всяких проверок может быть. Нужен универсальный assert(), который бы работал с true/false.

Артур-Байбулатов Автор вопроса
Хракс Мамцов
можно вот так

О, это уже ближе) Можно прямо на ходу объявлять проверки. Правда, всё равно слегка многословно получается, но всё равно прикольно) Спс. if (assert((x): x is string => typeof x === 'number')(value)) { console.log(value.toUpperCase()); } if (assert((x): x is Date => x instanceof Date)(value)) { console.log(value.toISOString()); } if (assert((x: any): x is AxiosError => 'isAxiosError' in x)(value)) { console.log(value.response); }

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта