enkot / nuxt-open-fetch

Generate zero-overhead, typed OpenAPI clients for Nuxt.
https://nuxt-open-fetch.vercel.app
MIT License
134 stars 12 forks source link

Method error type (Vue: Type string is not assignable to type never) #26

Closed dwins-dev closed 6 months ago

dwins-dev commented 7 months ago

Hi I have a problem with typing

image

Moreover, the interface contains these methods

image image

schema: "https://petstore3.swagger.io/api/v3/openapi.json" Please help me

hempflower commented 6 months ago

Same issue. But I seem to have found the cause of this problem. (I'm sorry for my poor English.)

Resaon

In this file https://github.com/enkot/nuxt-open-fetch/blob/main/src/runtime/fetch.ts#L17

export type ParamsOption<T> = T extends { parameters?: any, query?: any } ? T["parameters"] : never

If api not have ‘parameters’ or ‘query’, Then ParamsOption = 'never'.

Type UseOpenFetchOptions definition is as follows

type UseOpenFetchOptions<
  Method,
  LowercasedMethod,
  Params,
  ResT,
  DataT = ResT,
  PickKeys extends KeysOf<DataT> = KeysOf<DataT>,
  DefaultT = null,
  Operation = 'get' extends LowercasedMethod ? ('get' extends keyof Params ? Params['get'] : never) : LowercasedMethod extends keyof Params ? Params[LowercasedMethod] : never
> =
  ComputedMethodOption<Method, Params>
  & ComputedOptions<ParamsOption<Operation>>
  & ComputedOptions<RequestBodyOption<Operation>>
  & Omit<UseFetchOptions<ResT, DataT, PickKeys, DefaultT>, 'query' | 'body' | 'method'>

ParamsOption =never, then ComputedOptions<ParamsOption> = never. So UseOpenFetchOptions = never.

When I changed UseOpenFetchOptions definition, it's working.

export type ParamsOption<T> = T extends { parameters?: any, query?: any } ? T["parameters"] : {}