typescript 中下面的写法为什么不起作用?

export interface Query<Field extends string | number | symbol> {
  fields?: Field | Field[]
  filters?: {
    [p in Field]: string
  }
}

interface HttpOptions<Field extends string | number | symbol> {
  needAuth?: boolean
  query?: Query<Field>
}

export function http<T, Field extends keyof T = keyof T>(
  requestOptions: UniApp.RequestOptions,
  httpOptions?: HttpOptions<Field>,
) {...}

在使用时,对应的 Tool 有一个 description 字段,但是在输入 des 并不会有类型的提示。

http<Tool>(
    {
      method: 'GET',
      url: '/tools',
    },
    {
      query: {
        fields: 'cost',
        filters: {
          des,
        },
      },
    },
  )

如果把上面的代码改写为

export interface Query<T, Field extends keyof T = keyof T> {
  fields?: Field | Field[]
  filters?: {
    [p in Field]: string
  }
}

interface HttpOptions<T> {
  needAuth?: boolean
  query?: Query<T>
}

export function http<T>(requestOptions: UniApp.RequestOptions, httpOptions?: HttpOptions<T>) {...}

再输入 des 时就会把 description 提示出来。为什么上面的类型提示会失效?

阅读 513
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏