Как вы используете интерфейсы с двумя параметрами расширения? - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь понять код при использовании машинописи в реагирующей таблице, и я сталкиваюсь с интерфейсами такого типа

 export interface TableInstance<D extends object = {}>
    extends Omit<TableOptions<D>, 'columns' | 'pageCount'>,
        UseTableInstanceProps<D> {}

заметил, что эти два ключевых слова расширяются в интерфейсе. Экземпляр таблицы генерируется при вызове

    export function useTable<D extends object = {}>(
    options: TableOptions<D>,
    ...plugins: Array<PluginHook<D>>
): TableInstance<D>;

, после чего я могу получить доступ к свойствам TableInstance, унаследованным от UseTableInstanceProps

Я пишу, говоря, что TableInstance - это объект, который наследует свойства Omit и UseTableInstanceProps?

Что означает этот пропустить? Есть ли ресурсы, которые могут помочь мне понять этот синтаксис?

/**
 * Construct a type with the properties of T except for those in type K.
 */
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

1 Ответ

0 голосов
/ 23 апреля 2020

Omit, Pick и Exclude являются типами служебных программ TypeScript, как задокументировано здесь .

Следовательно, response-table создает свою собственную версию Omit, то есть она не совпадает с Omit Тип утилиты TypeScript. Что касается ключевого слова keyof, обратитесь к this .

...