如何在 TypeScript 中為 forEach 定義一個類型?
我有一個 PersonTypes 物件陣列,想要在 forEach 迴圈中只使用部分鍵。什麼樣的 TypeScript 型別寫法更精確、正確?我可以這樣寫:people.forEach((person: Pick<PersonTypes, 'name' | 'gender'> 或 people.forEach((person: PersonTypes) =>{ 或 people.forEach((person: any) =>{,哪一種在 TypeScript 中是正確的寫法?
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);
} )
答案#1
你應該只遵循:
people.forEach((person: PersonTypes) =>{
});
這是因為 people 陣列中的每個物件都是 PersonTypes 類型,實際上不需要從該類型中提取屬性。
事實上,沒有必要將 person 顯式地輸入為 PersonTypes,因為 people 是 PersonTypes[]。TypeScript 將自動推斷陣列中的每個對象都是 PersonTypes,所以這樣就足夠了:
people.forEach((person) =>{
});
或者,你可以選擇解構參數,這將使你的函數更簡潔和清爽。
people.forEach(({ name, gender }) =>{
console.log(name);
console.log(gender);
});
