我有以下功能:
export const sortAlphabetically = <T>(array: T[], property: string) =>
array.sort((a: T, b: T) =>
a[property].localeCompare(b[property]));
应该是 T 中的property
键(作为字符串?),不应接受其他值。我试过了,property: [key in t]
但这不起作用。有没有办法做到这一点?
我有以下功能:
export const sortAlphabetically = <T>(array: T[], property: string) =>
array.sort((a: T, b: T) =>
a[property].localeCompare(b[property]));
应该是 T 中的property
键(作为字符串?),不应接受其他值。我试过了,property: [key in t]
但这不起作用。有没有办法做到这一点?
keyof
运营商应该做的伎俩
export const sortAlphabetically = <
T extends Record<string, string>
>(array: T[], property: keyof T) =>
array.sort((a: T, b: T) => a[property].localeCompare(b[property]));
您需要向 TypeScript 保证 property 的值为string
. 这就是我使用的原因T extends Record<string, string>