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

Ребят, при передаче объектов в качестве параметра допустимо указывать лишние

ключи. Как сделать так, чтобы при вызове переменной с лишними ключами функция ругалась? (она ругается на лишние ключи, если передавать напрямую объект)

13 ответов

22 просмотра
Nikita-Logunyonok Автор вопроса

то же самое поведение https://codesandbox.io/s/elegant-chatterjee-1k78tj?file=/src/App.tsx

По сути из-за того что в typescript структурная типизация, то из коробки нет возможности сделать что-то подобное в виде Exact как во flow, по крайней мере на сколько я знаю ещё не завезли, хотя ишьюс такой встречал. Я как-то тоже пытался сделать подобное через дженерики или ещё как-нибудь, но всегда приходил к одному - пока это не появится нативно, решать это лишь пустая трата времени, так как по сути ты на пустом месте усложняешь код и создаёшь себе проблемы) так что действительно тебе это нужно?)

Nikita-Logunyonok Автор вопроса
Nikita Stenin
По сути из-за того что в typescript структурная ти...

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

Nikita Logunyonok
пока ток на стадии начала изучения, мб пока и прав...

Кстати, вот вроде один из https://github.com/microsoft/TypeScript/issues/12936 аж с 2016 года открыт)

Nikita-Logunyonok Автор вопроса
Nikita Stenin
Кстати, вот вроде один из https://github.com/micro...

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

Nikita Logunyonok
пока ток на стадии начала изучения, мб пока и прав...

В последней версии typescript завезли оператор satisfies https://devblogs.microsoft.com/typescript/announcing-typescript-4-9-beta/#the-satisfies-operator но оно кажется про другое, сам ещё не успел им воспользоваться

Nikita-Logunyonok Автор вопроса
Nikita Logunyonok
screenshot то же самое поведение https://codesandbox.io/s/ele...

@nikita_stenin сможешь вот эту маленькую задачку решить, чтоб работало корректно? был бы рад, если бы ты показал, как это корректно делается

Nikita Logunyonok
@nikita_stenin сможешь вот эту маленькую задачку р...

А в чем задача? Почему когда передаёшь объект, нет ошибки?

Nikita-Logunyonok Автор вопроса

точнее не объект, а переменную в виде объекта. Ес передавать сам объект, то ошибка норм генерится https://t.me/ts_cool/253841

Nikita Logunyonok
точнее не объект, а переменную в виде объекта. Ес ...

Ну с точки зрения ts тут все корректно в целом) если тебе не помогает вот это https://fettblog.eu/typescript-match-the-exact-object-shape/ то я не знаю ответа.

Nikita-Logunyonok Автор вопроса

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

Nikita Logunyonok
screenshot а, кст да, можно же просто указать тип для объекто...

Ну если формально, то да результат достигнут, но по факту данный пример не совсем подходящий) Так как в реальности ты скорее хочешь наоборот иметь общую функцию вывода отчета, которая умеет работать с разными сущностями. Банальный пример: interface Dog extends Printable {} interface Car extends Printable {} В этом случае ты вряд ли захочешь перечислять все возможные варианты, а просто у аргумента укажешь тип Printable

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

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

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...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта