keyof
. (это же и причина почему ts сам так не делает)type Mappable = {
foo: number[];
bar: string[];
}
function mapValues(obj: Mappable) {
let key: keyof Mappable;
for (key in obj) {
console.log(`obj.${key}`, obj[key].map(val => `[${val}]`));
}
}
const complexObject = {
foo: [1, 2, 3],
bar: ['a', 'b', 'c'],
оппа: 'нежданчик'
}
mapValues(complexObject);
const GridItem: FC<IGridItemProps> = bool ? GridItemSuper : GrigItemNice;
<Grid title={gridTitle}>
{items.map((props) => <GridItem {...props}/>)}
</Grid>
Подожди, откуда ты это взял?
// Если вообще не передавать queries, то тип пропса getList станет:
// (props: {
// page: number;
// limit: number;
// } & {
// page: number;
// limit: number;
// search: string;
// city: number;
// }) => void
// Это тоже должно быть ошибкой, т.к., во-первых, тип должен быть, т.к. по идее должен срабатывать условный тип:
// (props: {
// page: number;
// limit: number;
// }) => void
// а не тот, что на выходе, и, во-вторых, ts должен ругаться, т.к. функция ожидает большее количество свойств в объекте
<Pagination
getList={getList}
/>
Без queries
должно принимать только функцию с дефалтными параметрами.
Нельзя. Иначе твой код сразу бы работал и вопроса бы не возникло.
Вместо колхоза с таймаутами есть MutationObserver. Это тоже колхоз, но хотябы официальный. Единственный адекватный вариант - разобраться с имеющимся кодом и api и использовать имеющиеся, ставлю бороду Вассермана, там для этого методы.