输入具有相同键和一个键的 2 个对象

问题描述 投票:0回答:1

我有一个函数,它接受 2 个对象和一个键,该键是该对象的键之一。

示例:

obj1 = {name: 'ram', salary: '10000', age: 20};
obj2 = {name: 'tam', salary: '30000', age: 50};
key = 'name' // key can be either 'name', 'salary', or 'age'

所有键或 obj1 和 obj2 必须相同。 键必须是对象中的键之一。

我尝试构建这样的类型:

 sortComparator?:<K extends Record<string, any>, T1 = K, T2 = K, Key = keyof K>(
    row1: T1,
    row2: T2,
    accessor: Key
  )

这不起作用,因为它允许 row1 和 row2 有不同的键。

typescript sorting object typescript-generics
1个回答
0
投票

为了实现 sortComparator 函数的类型安全并确保 row1 和 row2 具有相同的键,您可以使用 TypeScript 的泛型类型和映射类型。这是您的 sortComparator 的可能类型定义:

type SortComparator<T, K extends keyof T> = (row1: T, row2: T, accessor: K) => number;
© www.soinside.com 2019 - 2024. All rights reserved.