typescript 中如何表示数组的类型?

const arr = [
  { a: 1, b: 2 }
];

// 在不抽取公共类型(例如使用 type interface)的前提下 如何标识 obj 的类型(obj 的类型和数组的元素类型相同)
function handleItem(obj:any) {
  console.log(obj);
}

for (const item of arr) {
  handleItem(item);
};
阅读 2.4k
3 个回答

不抽取公共类型,你怎么保证你的数据是规范的,比如

arr = [
  {a:1, b:2},
  '123'
]

即使人为确定了,你的程序也不确定啊。

如果一定要实现你的想法,那用泛型吧

function handleItem<T>(obj:T) {
  console.log(obj);
}

但我认为最好的做法就是

interface Item {
  a: number
  b: number
}
const arr: Item[] = [
  { a: 1, b: 2 }
];

// 在不抽取公共类型(例如使用 type interface)的前提下 如何标识 obj 的类型(obj 的类型和数组的元素类型相同)
function handleItem(obj:Item) {
  console.log(obj);
}

for (const item of arr) {
  handleItem(item);
};
const arr = [
  { a: 1, b: 2 }
] as const;

type M = typeof arr;

function handleItem(obj:M[0]) {
  console.log(obj);
}

for (const item of arr) {
  handleItem(item);
};

不很明白你的意思

ts使用的填鸭式类型方式,形似即可。
以下两种方式

  1. 带有声明
  2. 使用泛型
    个人也推荐泛型
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题