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

А поч не сделают чтобы при указании интерфейса в defineProps

- в параметры указывалось тоже самое, что в withDefaults?)
Типо
const props = defineProps<{test: string}>({test: "123"});

27 ответов

22 просмотра

да, так было бы удобнее, но уже не получится, потому что если ты пишешь без TS, то пропсы как раз передаются в defineProps тут нужно новый макрос для этого заводить

Иван-М Автор вопроса
Artyom Tuchkov
да, так было бы удобнее, но уже не получится, пото...

Но в случае с TS сейчас там вообще нельзя указать параметры при указании интерфейса. То есть кейс свободен.

Artyom Tuchkov
да, так было бы удобнее, но уже не получится, пото...

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

Artyom Tuchkov
имхо, много боли идет от того, что вью зачем-то до...

но иначе на TS и на JS будет разная работа, и не будет работать проверка для либ при использовании в JS проектах

Grigorii K. Shartsev
но иначе на TS и на JS будет разная работа, и не б...

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

Artyom Tuchkov
имхо, много боли идет от того, что вью зачем-то до...

вью все еще пытается дружить с JS first решениями :D реакт у которого как раз и был изначально валидатор пропсов уже сто лет как забыл что такой плагин вообще когда-то существовал :D

Иван-М Автор вопроса
Denis Chernov
вью все еще пытается дружить с JS first решениями ...

и это его огромный плюс. Меня бы тут не было, если бы вью требовал компиляцию)

Denis Chernov
вью все еще пытается дружить с JS first решениями ...

это да, вот как раз можно было бы сделать это отдельной маленькой либой и если кому-нибудь нужна рантайм валидация, то пусть ставят и радуются

Иван М
Но в случае с TS сейчас там вообще нельзя указать ...

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

Иван-М Автор вопроса
Artyom Tuchkov
технически - да, если опираться на одновременное у...

Есть еще идейка: вместо описания withDefault - писать полноценный объект { test: {default: "123"} }, но type не указывать, т.к. type можно указать в дженерике.

Иван М
Есть еще идейка: вместо описания withDefault - пис...

ну это по сути то же дублирование, что у нас сейчас есть с withDefaults

Иван-М Автор вопроса
Artyom Tuchkov
ну это по сути то же дублирование, что у нас сейча...

нее, сейчас так тоже можно, но обязательно надо указать type и нельзя указать дженерик

Иван-М Автор вопроса
Иван М
нее, сейчас так тоже можно, но обязательно надо ук...

т.е. сейчас можно вот так: const props = defineProps({test: {type: String, default: "123"}}) А я предлагаю для TS упростить так: const props = defineProps<{test?: string}>({test: {default: "123"}})

Artyom Tuchkov
ну это по сути то же дублирование, что у нас сейча...

цель сделать так, чтобы это было максимально интуитивно и просто мне больше всего нравится вариант с обычной функцией, но это не получится нормально организовать внутри script setup export default defineComponent((p: SomeInterface) => { const props = withDefaults(p, { someProperty: ‘default value’ }); }); тут даже можно отказаться от функций для непримитивов в дефолтных значениях

Иван-М Автор вопроса
Иван М
т.е. сейчас можно вот так: const props = definePro...

хотя тогда и required отменяется параметр

Иван М
т.е. сейчас можно вот так: const props = definePro...

но твой упрощенный вариант очень сильно похож на const props = withDefaults(defineProps<SomeInterface>(), { test: ‘123’ }) и в нем даже нет вложенности в дефолтных пропсах

Иван-М Автор вопроса
Иван-М Автор вопроса
Artyom Tuchkov
а зачем нам валидатор?)

ну так мой вариант и валидатор учитывает

Иван М
ну так мой вариант и валидатор учитывает

да, но нужен ли он, когда у тебя все типы объявлены в TS и чекаются при сборке?

Иван-М Автор вопроса
Иван-М Автор вопроса
Artyom Tuchkov
дженерики?)

а вдруг тип с сервера приходит

Иван М
а вдруг тип с сервера приходит

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

Иван-М Автор вопроса
Artyom Tuchkov
рантайм-валидация все равно работает только в деве...

в ней есть смысл, если у нас есть голые .js файлы, в которых нет TS. Они могут встраиваться в проект на TS, например.

Иван М
в ней есть смысл, если у нас есть голые .js файлы,...

но ведь если у нас нет TS, то мы просто можем использовать текущую сигнатуру, где все описывается прям в объекте, включая тип а если есть TS, то как раз уже можно спокойно откинуть все, кроме дефолтных значений собственно, сейчас так оно и сделано

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта