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

Всем привет, используется TS 4.5.5, был изначально интерфейс A, потом

появился еще B, объединил их в типе MyType MyType = interface A { operator: 'bla', value: string } | interface B { operator: 'foo', value: string[] }, добавил два гарда, чтобы выводить A или B по полю operator. Теперь понадобилось еще расширить B => interface B { operator: 'foo', value: string[] | C[] } и хочу теперь различать interface B с value: string[] и interface B с value: C[], как это лучше описать? Чтобы сделать гард на interface B с value: C[] надо на что-то ссылаться, мб правильнее разделить interface B на два?

9 ответов

17 просмотров

value: string[] | C[] C - это generic или что?

Просто тогда можно так описать interface B <C = string> = { operator: 'foo', value: C[] }

я скажу страшное - может вам типы и не нужны? type Either<A, B> = [A, undefined?] | [undefined, B]; вот в таких шутках это удобно а у вас какой-то матан из типов получается просто после таких вопросов я понимаю js-еров которые говорят что ts делает все излишне сложным go вообще пошел по пути "не каждому девелоперу нужна вся мощь языка" поэтому лучше мы не дадим всю мощь нежели дадим писать разрабу нечитаемый код

Ig
я скажу страшное - может вам типы и не нужны? typ...

Это на самом деле не оч хороший Either, лучше своровать его из фп-тс

Одним гвардом это не сделать, тк гвард не хранит контекст того какое поле реализуется

начали вот тут я на шляпу автора говорил что если ты создал из типов стейтмашину - может тебе типы и не нужны и привел пример простого кода где типы нужны

Ig
начали вот тут я на шляпу автора говорил что есл...

Ну как, я мог бы придраться, что это лишний слой абстракций, тк вы используете отдельный тип, чтобы обвернуть два других типа, но ладно. Ну и название тогда не очень удачное имхо

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта