Array<ProductType>) => void) | (() => void);
Как потом можно в функции проверить, что если у меня с аргументами функция то он ожидает и получает 2 аргумента, если нет то просто вызывается без аргументов?
думаю, самое простое и лаконичное решение — сделать аргументы опциональными
(...args: [] | [color: ProducType, colors: Array<ProductType>]) => void А в теле уже args.length проверять
const isNativeClickHandler = ( click: NativeOnClickType | LibraryOnClickType, ): click is NativeOnClickType => { return click.length === 2; }; вот так будет не верно сделать?
Выглядит слабовато, но лучше как будто не сделать без доп приседаний
У функции в рантайме разве есть данные о количестве ожидаемых параметров? Внутри функции да есть, а снаружи нет же, или я ошибаюсь? 🤔
Ну кстати мой пример и не работает) так что вопрос не снимается
Ну можно length как дискриминатор заставить работать, но это извращение, кмк https://www.typescriptlang.org/play?#code/C4TwDgpgBAMhB2BzYALAPAMShAHsBAJgM5QYCu8AxsAJYD28ANLNnoSfGQLYBGEATgD4oAXlJQAZFADeAKCgKo-CAEMCDADYgoGhMhQAuWAG5ZAX1OzQkUgEZRsPajQAKHEc68BzEEaLB+GiQASlFhADc6GgJmACZBU2toDFiHOCRnF1CRCKiYqAAGBNlZADMKanp4KHx-FxQVeAJdfiMMewAfUljQuUUoGlKoesbmgQA6XQyUURExHpl5fsVlYDJ+aoamlpdbZgByWP3g036zEv7V9c3RnZPzEsoGfyhS+zEXNw9uPn4fPwCQUQ2WEfUUT3gRDoukmdEQLn2iDowCgqRU-EQRH2zBwPnuZlCKhI7UsEJepVSHyyYUW-TJ0IgsPhiORhSg6Mxx1MBPZxNillqwBcb3uguFPUsQA
Обсуждают сегодня