Типизация скриптов для динамического реагирования контекста - PullRequest
1 голос
/ 20 сентября 2019

Я создаю новый контекст export const SchemaContext = React.createContext(null);

объект контекста создает в компоненте, который получает реквизит, который будет частью контекста.

type TSchemaProps<M = {}}> = {
  model: M
};


export const Schema = <M,>({
  model: globalModel
}: TSchemaProps<M>) => {
  const [model] = useState<M>(globalModel);

  const context = {
    model,
    isRoot: true
  };

  return (
    <SchemaContext.Provider value={context}> // Type { model: M } is not assignable to null
      {children}
    </SchemaContext.Provider>
  );
};

и теперь мы можем использоватьJSX универсальный для ввода

type TModel = {
    docNum: number,
    docDate: number,
    group: {
        kpp: string,
        orgn: string
    }
};

const MainComp = () => {
  <Schema<TModel> />
}

Как я могу передать TModel в тип контекста?

1 Ответ

0 голосов
/ 20 сентября 2019

Вы можете передать универсальный в createContext при создании контекста для определения типа его значений.

type TModel = {
    docNum: number,
    docDate: number,
    group: {
        kpp: string,
        orgn: string
    }
};

...

export const MyContext = createContext<TModel | SomeOtherType>(defaultValues);
...