Динамічна перевірка типів
Типи даних і змінних у мові JavaScript є основною мови програмування. Багато помилки виконання в JS є помилками типів. Наприклад, коли намагаються помножити «a number» на «a string», отримують помилку у вигляді «Not a Number» повернутого значення. Іноді при виклику функцій і отримують помилку «невизначена is not a function», це відбувається, коли намагаються отримати доступ до властивості, що не визначено. Так як JS не може знайти властивість, то повертає його значення за замовчуванням в резервний: undefined. Інша поширена помилка, пов’язана з типом, коли намагаються змінити або отримати доступ до властивості до значення, яке є null або undefined. Тут немає таких конструкторів, як Undefined або Null.
Система типів JS допомагає уникнути поширених помилок. За визначенням, він є интерпретируемым і динамічним мовою, і вимагає, щоб система типів працювала під час виконання коду. Мова також намагається допомогти, мовчки конвертуючи типи значень. Зміна типу або примус – це причина, по якій багато розробники переключаються на суворе використання(===) для перевірки рівності значень.
Динамічна перевірка типу даних JavaScript виконується через бібліотеку TypeRight. Серед інших особливостей він використовує підхід для реалізації наступних псевдокласів, єдина мета яких – бути правими сторонами instanceof оператора:
- PrimitiveUndefined.
- PrimitiveNull.
- PrimitiveBoolean.
- PrimitiveNumber.
- PrimitiveString.
- PrimitiveSymbol.
TypeRight в даний час не надає клас для перевірки факту, чи є значення об’єктом, але його можна легко додати.