Задать вопрос
@Akim41k
23 years old Designer from san. Francisco

Как переделать этот код под TypeScript?

Как оптимизировать данный код под TypeScript, чтобы он не ругался? Все работает, но хочется сделать все правильно..
import React, { FC, createContext, useState } from 'react'

interface ContextProviderInterface {
	children: JSX.Element
}

export const Context = createContext(null)

export const ContextProvider: FC<ContextProviderInterface> = ({ children }) => {
	const [sidebarIsOpen, setSidebarIsOpen] = useState(true)

	const toggleSidebar = () => {
		setSidebarIsOpen(sidebarIsOpen => !sidebarIsOpen)
	}

	return (
		<Context.Provider value={{ sidebarIsOpen, toggleSidebar }}>
			{children}
		</Context.Provider>
	)
}
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
TS тебе предельно понятно написал в чём проблема. Учись читать ошибки.

Конкретнее же: у тебя не задан тип значения которое может принимать контекст, а выведено самим TS - null(потому что именно такое значение по умолчанию ты передал).
export const Context = createContext<{
  sidebarIsOpen: boolean;
  toggleSidebar: (value: boolean) => void;
} | null>(null)
или лучше
export const Context = createContext({
  sidebarIsOpen: false,
  toggleSidebar: () => {}
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы