У меня есть методы внутри объекта, как показано ниже < /p>
const Api = {
person: {
find: (arg:{paramFind:string}) => {},
create: (arg:{paramCreate:string}) => {},
edit: (arg:{paramEdit:string}) => {},
remove: (arg:{paramRemove:string}) => {}
},
book: {
find: (arg:{paramFind:string}) => {},
create: (arg:{paramCreate:string}) => {},
edit: (arg:{paramEdit:string}) => {},
remove: (arg:{paramRemove:string}) => {}
}
} as const
< /code>
Мне нужно сделать функцию обертки, которая будет вызывать определенную функцию на основе ключей объекта и аргументов. Вот что я пробую до сих пор. < /P>
type TApi = typeof Api
function executeApi(arg:{
key: KEY,
method: METHOD,
param: Parameters[0]
}) {
// my other codes that will do cache stuff
// Line below is fine
return (Api[arg.key][arg.method] as any)(arg.param)
}
executeApi({
key:'person',
method: 'create',
param: {
paramCreate: 'John Doe'
}
})
< /code>
Ошибка в очереди < /p>
param: Parameters[0]
< /code>
Ошибка скажем < /p>
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][METHOD]' does not satisfy the constraint '(...args: any) => any'.
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][keyof { ...; }[KEY]]' is not assignable to type '(...args: any) => any'.
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][string] | { ...; }[KEY][number] | { ....' is not assignable to type '(...args: any) => any'.
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][string]' is not assignable to type '(...args: any) => any'.
< /code>
Мне нужно исправить это, поэтому он может принять параметр соответственно.
мне не волнует обратный тип этой функции. Я могу поднять другой вопрос для этого, если это необходимо. Просто нужно исправить при принятии параметров соответствующим образом < /p>
Что делать? Большое спасибо.
Playground
Подробнее здесь: https://stackoverflow.com/questions/797 ... ted-object
Как получить параметры функции внутри вложенного объекта? [закрыто] ⇐ Javascript
Форум по Javascript
-
Anonymous
1755330359
Anonymous
У меня есть методы внутри объекта, как показано ниже < /p>
const Api = {
person: {
find: (arg:{paramFind:string}) => {},
create: (arg:{paramCreate:string}) => {},
edit: (arg:{paramEdit:string}) => {},
remove: (arg:{paramRemove:string}) => {}
},
book: {
find: (arg:{paramFind:string}) => {},
create: (arg:{paramCreate:string}) => {},
edit: (arg:{paramEdit:string}) => {},
remove: (arg:{paramRemove:string}) => {}
}
} as const
< /code>
Мне нужно сделать функцию обертки, которая будет вызывать определенную функцию на основе ключей объекта и аргументов. Вот что я пробую до сих пор. < /P>
type TApi = typeof Api
function executeApi(arg:{
key: KEY,
method: METHOD,
param: Parameters[0]
}) {
// my other codes that will do cache stuff
// Line below is fine
return (Api[arg.key][arg.method] as any)(arg.param)
}
executeApi({
key:'person',
method: 'create',
param: {
paramCreate: 'John Doe'
}
})
< /code>
Ошибка в очереди < /p>
param: Parameters[0]
< /code>
Ошибка скажем < /p>
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][METHOD]' does not satisfy the constraint '(...args: any) => any'.
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][keyof { ...; }[KEY]]' is not assignable to type '(...args: any) => any'.
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][string] | { ...; }[KEY][number] | { ....' is not assignable to type '(...args: any) => any'.
Type '{ readonly person: { readonly find: (arg: { paramFind: string; }) => void; readonly create: (arg: { paramCreate: string; }) => void; readonly edit: (arg: { paramEdit: string; }) => void; readonly remove: (arg: { paramRemove: string; }) => void; }; readonly book: { ...; }; }[KEY][string]' is not assignable to type '(...args: any) => any'.
< /code>
Мне нужно исправить это, поэтому он может принять параметр соответственно.
мне не волнует обратный тип этой функции. Я могу поднять другой вопрос для этого, если это необходимо. Просто нужно исправить при принятии параметров соответствующим образом < /p>
Что делать? Большое спасибо.
Playground
Подробнее здесь: [url]https://stackoverflow.com/questions/79736592/how-to-get-parameters-of-function-inside-nested-object[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия