```

    export interface Alarm {
        shopNumber?: number;
        shopName?: string;
        daiNo?: number;
        errorCode?: number;
        errorContents?: string;
        occurrenceDateTime?: string;
    };
    
    export interface AlarmSearch {
        shopNumberSearch?: number;
        shopNameSearch?: string;
        daiNoSearch?: number;
        errorCodeSearch?: number;
        errorContentsSearch?: string;
        occurrenceDateTimeSearch?: string;
    };
    export const RequestSort = (TableApi:keyof Alarm ,SortProp:SortProps) => {
    
        const {order,orderBy,rows} = SortProp;
       
        const isAsc = orderBy === TableApi && order === 'asc';          //true or false
        const newOrder = isAsc ? 'desc' : 'asc';                        //asc or desc
        const newRows = rows.sort(getComparator(newOrder, TableApi));
    
        const ReturnProps:ReturnProp = {orderData:newOrder,orderByData:TableApi,rowsData:newRows}
        return ReturnProps;
    };
    
    export const RequestSort =RequestSort = (TableApi:keyof **Alarm**
    
```

export const RequestSort =RequestSort = (TableApi:keyof **Alarm**  
の箇所のAlarmを、  
Alarm、  
AlarmSearch、  
と更にインターフェースを追加して行きたい感じですが、  
どうして良いものか解りません。  
クラスを作ってみたり、  
interfaceを以下の様にTypeにてグループ化したりしましたが  
何か上手く行かない感じです。

```

    /**
     * TOP画面Alarmインターフェース
     */
    export interface Alarm {
        shopNumber?: number;
        shopName?: string;
        daiNo?: number;
        errorCode?: number;
        errorContents?: string;
        occurrenceDateTime?: string;
    };
    
    /**
     * アラーム検索画面インターフェース
     */
    export interface AlarmSearch {
        shopNumberSearch?: number;
        shopNameSearch?: string;
        daiNoSearch?: number;
        errorCodeSearch?: number;
        errorContentsSearch?: string;
        occurrenceDateTimeSearch?: string;
    };
    
    /**
     * Api種別
     */
    export type ApiType = keyof Alarm | keyof AlarmSearch
    
    /**
     * Api種別と型
     */
    export type ApiItem = {
        ApiKey: ApiType;
    };
    
    
```

何か良い手段というか方法はあるものでしょうか？
CC BY-SA 4.0
2022-12-15T08:02:46.780
92801
2022-12-15T08:02:46.780
56010
question
reactjs typescript next.js
KeyOfを使ったInterfaceの複数の実装