add = (list, item) => [...list. item].
Тут хотелось бы задать несколько типов для list и item. При этом не дублировать функцию
Можно перечислить через type1 | type2, либо использовать add<T, R> = (list: T, item: T) , при использование просто кидай add<TypeFirst, TypeSecond>, так же можно и в конце сделать
вконце, как function() {...} as add<TypeFirst, TypeSecond>?
Но у меня проблема всегда, idea не может понять какие там внутри есть свойства у объектов или тип, так как дженерик подразумевает на лету подставление типа, тебе придется читать свои типы или же предоставлять соответствие типа который ты будешь кидать в аргумент, как type TypeFirst = { key: string }[] type TypeSecond = { key: boolean } const a: TypeFirst = [{ key: 'value' }] const b: TypeSecond = { key: true } add<TypeFirst, TypeSecond>(a, b.key);
да, и придется продублировать add. Сейчас хочу попробовать add<T extends TypeFirst[]|TypeSecond[], P extends TypeFirst|TypeSecond> = (list:T, item: P) => P extends TypeFirst ? TypeFirst[] : P extends TypeSecond ? TypeSecond[] : T(??? хз что сюда)
стой бро, какая-то х честно, я несколько минут не могу понять что тут)) Чем проще тем легче будет тебе и другим поддерживать)
Обсуждают сегодня