从其他文件导入以下资源,由于所有权限制(我不拥有它),无法更改:
//otherfile.ts
//============
export type Maybe<T> = T | null;
export type Scalars = {
ID: string;
String: string;
Int: number;
AWSDateTime: any;
};
export interface SortOption {
label: string;
order: "asc" | "desc";
key: string;
id: string;
}
export type Asset = {
typename?: 'Asset';
updated_by?: Maybe<Scalars['String']>;
license_plate?: Maybe<Scalars['Int']>;
length?: Maybe<Scalars['Int']>;
}
export const SORT_OPTIONS: SortOption[] = [
{
order: "desc",
key: "updated_date",
label:"A",
id:"A"
},
]
这是消耗上面的代码。我拥有这段代码,并有自由改变这里的任何东西。
//consumer.ts
//===========
//import the above stuff here
import { sortBy } from "lodash";
type SortOptionKey = keyof Asset;
export const getSortedAssetsByOrder = (
assets: Asset[],
key: SortOptionKey & keyof Partial<Asset>,
) => {
return sortBy(assets, (x) => x[key]).reverse();
};
获取函数在另一个文件中使用的错误
“string”类型的参数不能分配给“keyof Asset”类型的参数。
return getSortedAssetsByOrder(result,sortOption.key,sortOption.order);
我在consumer.ts中有哪些选项可以解决此问题?
1条答案
按热度按时间jvidinwx1#
尽管缺少一些细节,但问题是
SortOptionKey
和keyof Asset
是不同的东西。SortOptionKey
可能有一些Asset
中不存在的值,因此,您应该接受Asset
中的值。只需将key
类型修改为相当于
SortOptionKey
和keyof Asset
的相互作用