From my point of view, TypeScript is not designed for programming on Roblox. It can be fun to create games using this language, especially for the pleasure of coding something other than Lua. However, in reality, your game will always run in Lua. Roblox does not natively support TypeScript, which means that your TypeScript code will be decompiled into Lua to function. In other words, you are letting an “algorithm” write your code. You lose complete control of your code, and there is a risk of performance loss.
TypeScript is an object-oriented language that uses classes, while Lua does not support classes but uses metatables instead. Some may argue that creating classes is better or something similar, but it is an illusion because the decompiler will be forced to use metatables to simulate your classes. Some may claim that your code will be cleaner and more readable by writing in TypeScript. The fact is that the cleanliness and clarity of your code depend solely on your efforts in this regard.
Personally, I have no issues at this level; my Lua code is clear and clean because I have opted for a well-organized structure, and I don’t feel the need to use something else to code my games. I believe it’s better to focus on Lua since it is the language that Roblox supports. You will undoubtedly achieve better results by writing your code directly in Lua instead of letting a decompiler write it for you.
Nevertheless, you’re free to choose either one and form your own opinion on the matter.