我有这个功能
export const handleSortableColumns = (headerKeys: string[], sortKeys: object): string[] => {
if (!headerKeys) return [];
return headerKeys.map((key: string): any => sortKeys[key] || null);
};
所以headerKeys参数采用list of string
sortKeys参数应该采用object
,但是我认为把对象类型放在这里是错误的,而且我不能定义类型或接口,因为每次都是不同的属性。我应该指定泛型类型吗?我该怎么做呢?另外,返回类型将是一个包含空值的字符串列表,所以什么应该是返回类型+禁止使用任何类型
3条答案
按热度按时间ldioqlga1#
对于
sortKeys
,您可以这样做对于返回类型,可以使用
zlwx9yxi2#
我把
sortKeys
和headerKeys
交换了。这有助于可用性,因为类型检查器立即知道你在操作什么对象。我还把headerKeys变元了,但是如果你喜欢的话,你可以把它还原成一个常规数组。。
现在是一个类型错误。但这并不能使您免于
包括更严格的返回类型检查很快就会变成一个不可读的类型汤。我建议使用运行时检查,
filter
或throw
。yb3bgrhw3#
你可以使用generic类型参数来推断输入值的类型,然后使用这些泛型来创建一个数组返回类型,它表示对象中的值的子集,这些值可以由输入数组中的值(或null)来索引。
TSPlayground
从TS Playground编译的JS: