首页 > 解决方案 > TypeScript 任何不提供特定参数的类型

问题描述

我有一个访问本地/会话存储的功能。它受到一个条件的保护,如果定义了窗口,它就可以调用该函数。

此函数传播一个通用args参数。我已将类型定义为any[]简化开发。

useSessionStorage函数内部,我得到了这个 TypeScript 错误:

没有提供“key”的参数。

我将如何解决这个问题?

export const useStorage = ( storage: any, key: string, initialValue: any, options = {} ) => {
  const { deleteKeyIfValueIs = null } = options as any
...
export const useSessionStorage = ( ...args: any[] ) => 
  useStorage( typeof window !== `undefined` && sessionStorage, ...args ) // <- Error here

标签: typescript

解决方案


该函数useStorage需要 3 或 4 个参数,而argsofuseSessionStorage将传递一个甚至超过 4 个参数,所以我们不能any[]在这里使用。为了更加类型安全,您可以尝试以下更改

// change
(...args: any[])
// into
(...args: [string, any, object?])

操场


推荐阅读