【问题标题】:localForage type is unkownlocalForage 类型未知
【发布时间】:2020-11-19 15:16:37
【问题描述】:
const AddMovieToDashboardFn = (movie) => {
  localForage.getItem('my array').then((value) => {
    const x: string[] = value;
    console.log(x)
  });
}

const x 有语法错误:

类型“未知”不能分配给类型“字符串[]”。

then 回调中的 value 参数是 unknown 类型,因此错误是有意义的。如果我喜欢value,它会显示一个数组。如何在 then 回调中给value 一个类型,应该是类型数组。

【问题讨论】:

    标签: typescript localforage


    【解决方案1】:

    试试这个:

    const AddMovieToDashboardFn = (movie) => {
      localForage.getItem('my array').then((value: string[]) => {
        const x = value;
        console.log(x)
      });
    }
    
    

    或者,由于 localforage 的类型允许传递类型参数 (https://github.com/localForage/localForage/blob/master/typings/localforage.d.ts):

    const AddMovieToDashboardFn = (movie) => {
      localForage.getItem<string[]>('my array').then((value) => {
        const x = value;
        console.log(x)
      });
    }
    
    

    (感谢@Elias Schablowski 在 cmets 中提出的建议)

    【讨论】:

    • localForage.getItem&lt;string[]&gt;('my array')
    • 我尝试在回调中设置类型,.then((value: string[]),但仍然返回错误:Argument of type '(value: string[]) =&gt; void' is not assignable to parameter of type '(value: unknown) =&gt; void | PromiseLike&lt;void&gt;'.。但是转换类型(如果我这样称呼它是正确的)确实有效! @EliasSchablowski 如果您想创建答案,我很乐意选择它。谢谢。
    • 这并不完全是转换参数 - 它更像是您通过传递类型参数来指定函数的签名。
    猜你喜欢
    • 2018-01-02
    • 2014-04-10
    • 2014-08-17
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2021-05-11
    • 2013-04-26
    • 1970-01-01
    相关资源
    最近更新 更多