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

Полный нуб в типизации, на какой-то банальной штуке застопорился. Прошу

совета:

- Есть товары 5 типов (тип ProductType - string literal union)
- Для каждого типа товара свой набор свойств (тип *tovar*Option)

Как мне типизировать функцию addToCart, если я хочу чтобы она принимала в качестве агрументов
1) Тип товара (productType: ProductType)
2) Объект с соответствующими этому типу товара опциями (???)

?

6 ответов

31 просмотр

дженерики?

Aleksey-Vilchik Автор вопроса
Иван Музыка
дженерики?

Уф, спасибо, буду пробовать. В теории то оно всё понятно было, а без практики хз куда чего применять :D

Aleksey-Vilchik Автор вопроса
Aleksey Vilchik
Уф, спасибо, буду пробовать. В теории то оно всё п...

@ABKTPM Всё равно что-то в голове не укладывается как правильно смэтчить тип продукта с его набором свойств :( type ProductType = "shirt" | "pants" type ShirtOptions = {name: string; width: number} type PantsOptions = {name: string; height: number} function addToCart<OptionsT>(productType: ProductType, item: OptionsT) { // тут я, допустим, тайп гардом разрулю куда класть продукт, // в зависимости от его OptionT. А как мне правильно обозначить связь // "shirt" --> ShirtOptions, чтобы TS ругался, если попытаться вызвать // функцию addToCart("pants", {name: "shirtname", width: 100}) ? }

Aleksey Vilchik
@ABKTPM Всё равно что-то в голове не укладывается ...

type ShirtOptions = { name: string; width: number } type PantsOptions = { name: string; height: number } type OptionsMap = { shirt: ShirtOptions; pants: PantsOptions } function addToCart<T extends keyof OptionsMap>(productType: T, item: OptionsMap[T]) {}

Aleksey-Vilchik Автор вопроса
Iurii Mamaev
type ShirtOptions = { name: string; width: number ...

Магия вне Хогвартса! Спасибо большое ❤️

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

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

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