типизация аргументов функции в паттерне roro

Наткнулся на паттерн roro, захотел использовать его в typeScript, но столкнулся с проблемой как затипизировать аругменты функции

func({ foo: string, bar: myType }): void {}

но ts так разумеется не съедает типизацию, возможно ли вообще такое реализовать?


Ответы (2 шт):

Автор решения: Alexey Ten

Надо явно объявлять тип объекта.

Например так

function func({ foo, bar }: { foo: string, bar: myType }): void {}

или отдельно интерфейс/тип

interface Params {
  foo: string;
  bar: myType;
}

function func({ foo, bar }: Params): void {}
→ Ссылка
Автор решения: qwabra

А можно и так:

песочниц там

type myType = any
declare var foo: string, bar: myType

type func1 = (q: { foo: string, bar: myType }) => void
declare var func1: func1
func1({ bar, foo })

interface func2 { (q: { foo: string, bar: myType }): void }
const func2: func2 = ({ foo, bar }) => { }
func2({ bar, foo })
→ Ссылка