我正在创建一个接口,并且想强制我的一个参数类型是一个对象数组或一个字符串数组。然后我有一个第二个参数,可选择根据第一个参数的类型传递。
更具体地说,我的代码看起来像:
export interface someClassProps<T extends object> {
list: Array<T | string | number> ;
value?: keyof T | Array<string | number>;
name?: keyof T | Array<string | number>;
disable?: keyof T | Array<boolean | number>;
}
class someClass extends React.Component<someClassProps> {
constructor(props: someClassProps) {
super(props);
}
}
我想确保如果列表的类型为Array<T>
,则value,name和disabled的类型为keyof T
,或者为undefined
。我很确定这将适用于当前的代码。
我还需要value和list作为相同类型的数组或值需要未定义。
看起来打字稿不允许你比较值,所以我不确定如何检查这个。
我计划在someClass
中使用一个方法来比较使用泛型的类型列表,值,名称和禁用,但这似乎不允许。我应该使用typeof list === typeof value
而不是直接尝试比较类型吗?