Ну во-первых, как заметил
mayton2019 , не существует "полноценного ООП", т.к. в индустрии нет единой математической модели этого подхода. В отличие, например, от реляционной модели, для которой есть общепринятые термины о определения.
В вопросах ООП каждый язык
д..ит делает как хочет. Понятное дело, что есть какие-то похожие принципы, но перед тем как их сравнивать, нужно тщательно разбираться и перепроверять.
В C++ и C# есть классовое ООП, соединённое с номинативной стратегией типизации. В JS и Lua есть прототипное ООП, которое в TypeScript приправляется структурной типизацией. В Rust по сути нет наследования, но есть полиморфизм. В Ruby есть концепция метаклассов, которая не особо известна в других языках. Все делают по-своему, говорить, что в каком-то языке "истинное" ООП - глупо, потому что об этом нет договорённости.
Исторически есть две крупные "школы" ООП - школа языка SIMULA и школа языка Smalltalk, вот можете
почитать об этом. К этим школам добавляется ещё
прототипный подход, который впервые появился в языке
Self, джаваскрипт тут Америку миру не открыл. История языков программирования вообще очень длинная и интересная штука, большинство идей в современных промышленных языках были изобретены значительно ранее в других языках, экспериментальных или академических.
JS как язык отвратителен не потому, что в нём "ненастоящее" ООП, а совсем по другим причинам.
с вашей идееологией интересно(с которой я согласен), как вы относитесь к тсу?
Вы спросили не у меня, но позволю себе ответить - TypeScript это лучшее, что было с JS, потому что он делает программирование на JS возможным. Обратите внимание - с точки зрения ООП тайпскрипт ничего нового не вносит, так что на мой взгляд дело вообще не в ООП. А например в том, что в JS
никак бл..ь не доедут записи. Как можно в 2023 году программировать на языке без таких элементарных вещей? За что нам такое наказание?