?: () => 语法是什么意思?

问题描述 投票:0回答:1

我在我正在使用的 NPM 模块中遇到了这个,但我不知道这意味着什么

getStorage?: () => StorageType

使用getStorage的地方:

export interface IAuthTokenInterceptorConfig {
  header?: string
  headerPrefix?: string
  requestRefresh: TokenRefreshRequest
  tokenExpireFudge?: number
  getStorage?: () => StorageType
}

以下是存储类型的定义:

export type StorageType = {
  remove(key: string): void
  set(key: string, value: string): void
  get(value: string): string | null
}

其次...我认为它试图告诉我,我可以提供自己的存储提供商..但我该怎么做?

typescript interface
1个回答
0
投票

getStorage
是一个可选属性,如果定义,则必须是返回
StorageType
的函数,又名 factory

例如,您可以定义一个工厂函数来返回

localStorage
支持的
StorageType
...

class LocalStorageType implements StorageType {
  remove(key: string) {
    localStorage.removeItem(key);
  }

  set(key: string, value: string) {
    localStorage.setItem(key, value);
  }

  get(key: string) {
    return localStorage.getItem(key);
  }
}

const myAuthTokenInterceptorConfig: IAuthTokenInterceptorConfig = {
  // other properties...
  getStorage: () => new LocalStorageType(),
}
© www.soinside.com 2019 - 2024. All rights reserved.