Pull to refresh
0
0

User

Send message
Но здесь вы не валидировали тип входящего параметра (что должен быть строкой), а значит эта функция не предназначена уже для обработки данных которы пришли со вне и не были перед этим скастованы к соответсвующему типу/структуре.
А если эта функция чисто для внутренего использования то Тайпскрипт отловит несоответсвия. Но опять же только если ктото просто насильно не указал что входящая переменная типа строка приэтом в реальности не скастовав это — ну или вобще не отключил стрикт моде в Тайпскрипте.
Когда вы запрашиваете значение с объекта по ключу, тем более динамического, это тот же самый поиск по массиву ключей. Причем здесь еще и по массиву ключей всех элементов цепочки прототипов. Что как подозреваю при любых n будит медленнее. Смысл тот что занимаясь микрооптимизацией нужно учитывать как работает каждая из операций. Кроме того внесли дополнительный неявный баг при значении как 'toString' и прочих которые не существуют в массиве но в имровизировани мап обекте они найдутся.
Тайпскрипт гарантирует ошибку при транспиллинге, если вы гдето указали что переменная является массивом а хотите использовать как строку. Тайпскрипт не гарантирует это если вы данные полученные из внешних источников не проверили и указали им не правильный тип.
Зря Вы так переусложнили:
— Вы уверены что поиск ключа объекта (ну и всей цепочки его прототипов) более быстро срабатывает как поиск на полное совпадение в статическом массиве? Тем более после разогрева.
— Array.includes всетаки более предпочтительно так как Вы явно подсказываете что там массив, и что Вы с ним хотите делать. Таким образом давая шанс движку сделать свои микрооптимизации. А также легче читается. А если вдруг ктото незнает что какая сложность у Array.includes то можно коммент добавить :)
Проще:
2хх — всё удачно
4хх — Вы чет не то прислали
5хх — Ой, чет на сервере набаранили

3хх — сервисные

Information

Rating
Does not participate
Registered
Activity