如何在打字稿中的 forEach 下定义类型?

jac*_*118 4 typescript typescript1.8 typescript-typings typescript2.0

我有一个PersonTypes对象数组,并且只想在 forEach 循环中使用部分键。什么是更精确、更正确的打字稿编码来提供类型?我可以做一些类似的事情 people.forEach((person: Pick<PersonTypes, 'name' | 'gender'>people.forEach((person: PersonTypes) =>{ 或者 people.forEach((person: any) =>{ 什么是在打字稿中编码的正确方法

export type PersonTypes = {
  name: string;
  value: string;
  gender: boolean;
};
const people: PersonTypes[] = [
  {name: 'apl', value: 'apple', gender: true},
  {name: 'gal', value: 'google', gender: false},
]
people.forEach((person: Pick<PersonTypes, 'name' | 'gender'>) =>{
//people.forEach((person: PersonTypes) =>{
//people.forEach((person: any) =>{
  console.log(person.name);
  console.log(person.gender);
} )
Run Code Online (Sandbox Code Playgroud)

wen*_*jun 10

你应该坚持:

people.forEach((person: PersonTypes) =>{


});
Run Code Online (Sandbox Code Playgroud)

这是因为people数组中的每个对象都是 type PersonTypes,并且实际上不需要从该类型中提取属性。

事实上,没有必要明确输入 person as PersonTypes,因为 people 是 of PersonTypes[]。TypeScript 会自动推断数组中的每个对象都是PersonTypes,所以这就足够了:

people.forEach((person) =>{


});  
Run Code Online (Sandbox Code Playgroud)

或者,您可以选择对参数进行解构,这将使您的函数更加简洁和干净。

people.forEach(({ name, gender }) =>{  
  console.log(name);
  console.log(gender);
});
Run Code Online (Sandbox Code Playgroud)