【问题标题】:Typescript treat JS array as objectTypescript 将 JS 数组视为对象
【发布时间】:2020-12-02 17:53:25
【问题描述】:

我有一个 js 函数,它输出一个包含 3 个数字的数组。 我可以定义一个类型/接口/任何将数组视为对象的东西。

这样Somethig.GetVector().X 就会转译成Something.GetVector()[0]

【问题讨论】:

    标签: typescript typescript-definitions


    【解决方案1】:

    不,TypeScript 转换不能那样工作。

    可以定义一个扩展数组的TypeScript接口:

    interface ExtArr extends Array<string> {
      extProp?: string
    }
    
    const a: ExtArr = ['foo', 'bar', 'baz']
    a.extProp = 'quux'
    

    但是,类型信息转译为空 - 它仅由 TypeScript 使用,而不是 JavaScript。

    或者,您可以定义一个函数,将数组转换为具有友好属性名称的对象。听起来这可能是您想要的用例:

    const makeFriendly = (unfriendlyArray: string[] /* or whatever type */) => {
      const [ propName1, propName2, propName3 ] = unfriendlyArray
    
      return { propName1, propName2, propName3 }
    }
    
    makeFriendly(['foo', 'bar', 'baz']) // { propName1: "foo", propName2: "bar", propName3: "baz" }
    

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 2021-06-20
      • 2021-10-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      相关资源
      最近更新 更多