null
(потому что именно такое значение по умолчанию ты передал).export const Context = createContext<{
sidebarIsOpen: boolean;
toggleSidebar: (value: boolean) => void;
} | null>(null)
или лучше export const Context = createContext({
sidebarIsOpen: false,
toggleSidebar: () => {}
});
json
, лучше тыкнуть в консоли на ответе "Copy object" и вставь в любой конвертер, который гуглится по "json to ts", например https://app.quicktype.io/. Так ты точно не ошибёшься, а потом уже можешь уточнить тип руками. unknown
и прогонять через тайпгард, проверяя руками, что он соответствует типу, но это не частая практика, увы. React.ComponentPropsWithRef<'select'>
находится свойство, которое дженерик Option
в Select
устанавливает как string | number
с большим приоритетом, чем то что ты кладёшь собственно в Options
. Можешь поискать сам убирая по одному или сравнивая с декларацией для Select
.React.ComponentPropsWithRef<'select'>
, т.к. ты расширяешь не нативный select
, а react-select
.import Select, { Props } from 'react-select';
interface ISelectProps extends Props<OptionType> {
caption?: string;
disabled?: boolean
}
[ {title: string, cardList: []} ]
- это не массив, заполняемый значениями типа {title: string, cardList: []}
, это кортеж из одного значения данного типа.Array<{title: string, cardList: []}>
или так {title: string, cardList: []}[]
. setTimeout
будет возвращать простой number
, а clearTimeout
будет принимать number | undefined
. И никаких проблем.)window.setTimeout
и window.clearTimeout
. Grid
сделать тип IGridItemProps
с теми свойствами которые точно нужны для работы Grid
, а в GridItem
наследовать от него уже конкретную реализацию interface GridItemProps extends IGridItemProps { ... }
. Однако это нужно только если теоретически могут появиться ещё GridItemSuper
и GrigItemNice
, если же такого быть не может и модули(компоненты) сами по себе тесно связны, то заморачиваться не стоит.