Typescript 将 JS 数组视为对象

Typescript treat JS array as object

我有一个 js 函数输出一个包含 3 个数字的数组。 我可以定义一个将数组视为对象的 type/interface/whatever 吗?

所以 Somethig.GetVector().X 转换成 Something.GetVector()[0]

不,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" }