根据Interface中的Required属性类型设置可选属性的类型

时间:2018-05-18 18:52:31

标签: arrays typescript types

我正在创建一个接口,并且想强制我的一个参数类型是一个对象数组或一个字符串数组。然后我有一个第二个参数,可选择根据第一个参数的类型传递。

更具体地说,我的代码看起来像:

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而不是直接尝试比较类型吗?

0 个答案:

没有答案