Не нужно от них избавляться. Если это нажатие на кнопку, там ему самое место, просто нужно или залогировать информацию об ошибке, или вывести информацию на экран (или всё вместе). Если бы он в классе с алгоритмом подавлял ошибки, то да, это было бы не то что неподдерживающийся хаос, это просто был бы нерабочий код, который нельзя так писать. Проще говоря, если не будет трай кэтча в методе нажатия на кнопку, то приложение будет просто крашиться. Мы же можем приложение не крашить, а просто завершить выполнение работы не получив результат. В таком случае, имея логи, можно разобраться в проблеме. Бывают ошибки, не связанные с алгоритмом, например, антивирус заблокировал файл, не удалось его открыть и прочитать. У меня такое было.Если произошло исключение (исключительная ситуация) - программа должна была падать, ибо это косяк программиста и его надо ловить как можно раньше. Если файл не читается - это не исключение, а ошибка, ее не надо кидать через throw, ее нужно возвращать через return и обрабатывать, ибо это штатная ситуация, ожидаемый результат вызова. Вездесущие try-catch - рассадник багов.
v != null
type Union = 'a' | 'b' | 'c';
type Obj<U extends string> = {
[K in U]: any;
};
вообще в 20 раз вышло
first for: 78.940ms
----------------------
second for: 1536.180ms
где-то в 1.5 раза...
first for: 108.457ms
----------------------
second for: 1.829s
const result=[];
const result = new Array(ls.length + 1);
но они мне кажутся какими-то оторванными от остального кода
логика не очень отделена от внешнего вида, что тоже не очень хорошо
да, можно и такой вариант использовать, но мне он не нравится по причине того, что придется каждый раз из i вычитать единицу чтобы получить индекс массива.
UPD. Всё же вы правы, оно действительно работает без вычета единицы. Спасибо, в будущем пригодится =)
const Table:React.FC<ITable>
const Table:React.FC<ITable<{row1: string; row2: string}, {column1: string; column2: string}>>
в зависимости от того, что Вы хотите получать в пропсы