TypeScript vs JavaScript: Core Differences Explained