<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrii Pervashov</title>
    <description>The latest articles on DEV Community by Andrii Pervashov (@apervashov).</description>
    <link>https://dev.to/apervashov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2161732%2F767e9321-8533-4d51-969f-79d43c122eae.webp</url>
      <title>DEV Community: Andrii Pervashov</title>
      <link>https://dev.to/apervashov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/apervashov"/>
    <language>en</language>
    <item>
      <title>Stop letting AI finish your TypeScript exercises</title>
      <dc:creator>Andrii Pervashov</dc:creator>
      <pubDate>Tue, 04 Aug 2026 12:03:58 +0000</pubDate>
      <link>https://dev.to/apervashov/stop-letting-ai-finish-your-typescript-exercises-3e78</link>
      <guid>https://dev.to/apervashov/stop-letting-ai-finish-your-typescript-exercises-3e78</guid>
      <description>&lt;p&gt;Most AI coding assistants optimize for getting you unstuck, not for helping you remember why the solution works.&lt;/p&gt;

&lt;p&gt;Ask about generics, narrowing, or mapped types and you'll usually get a correct implementation in seconds. It feels like progress because the problem is gone.&lt;/p&gt;

&lt;p&gt;Then the same concept comes up a week later during a PR review, and you're staring at it again.&lt;/p&gt;

&lt;p&gt;That's usually not because TypeScript is complicated. You just never had to build the mental model yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problematic pattern we've all seen
&lt;/h2&gt;

&lt;p&gt;It usually goes something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You hit a type error you don't fully understand.&lt;/li&gt;
&lt;li&gt;You paste it into ChatGPT, Claude, Copilot, Cursor, or whatever you're using.&lt;/li&gt;
&lt;li&gt;It gives you a working solution.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tsc&lt;/code&gt; passes.&lt;/li&gt;
&lt;li&gt;You continue with your work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nothing about that workflow is inherently bad. If you're trying to ship something, it's often exactly what you should do.&lt;/p&gt;

&lt;p&gt;The problem is when that becomes your learning workflow.&lt;/p&gt;

&lt;p&gt;The part that actually sticks isn't reading the final code. It's trying to understand why your first attempt failed, what TypeScript was trying to tell you, and how the type system arrived at that error in the first place.&lt;/p&gt;

&lt;p&gt;AI removes most of that process. Conveniently.&lt;/p&gt;

&lt;p&gt;Unfortunately, that's also the part that turns syntax into intuition.&lt;/p&gt;

&lt;h2&gt;
  
  
  What has worked better
&lt;/h2&gt;

&lt;p&gt;The developers I've seen improve the fastest usually do something much simpler.&lt;/p&gt;

&lt;p&gt;They read one Handbook topic.&lt;/p&gt;

&lt;p&gt;They try the exercise without asking AI first.&lt;/p&gt;

&lt;p&gt;They write down why they think their solution works.&lt;/p&gt;

&lt;p&gt;Only then do they ask for feedback or hints.&lt;/p&gt;

&lt;p&gt;That feels much closer to having a mentor than having an autocomplete engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  That's why I built TS Learn Path
&lt;/h2&gt;

&lt;p&gt;I wanted a repository where AI behaves more like someone reviewing your work than someone doing it for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TS Learn Path&lt;/strong&gt; follows the official TypeScript Handbook and Reference one topic at a time.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one folder per Handbook topic (&lt;code&gt;exercises.ts&lt;/code&gt; / &lt;code&gt;exercises.tsx&lt;/code&gt; + &lt;code&gt;NOTES.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;a Git-friendly progress tracker (EN/RU)&lt;/li&gt;
&lt;li&gt;estimated difficulty and time for every lesson&lt;/li&gt;
&lt;li&gt;mentor instructions for Cursor, Claude, Codex, Gemini, Copilot, and Windsurf&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tracker isn't really the point.&lt;/p&gt;

&lt;p&gt;The mentor rules are.&lt;/p&gt;

&lt;p&gt;The instructions tell the AI to review attempts first, ask questions, explain concepts using practical examples, and avoid giving away complete solutions unless you explicitly ask for them.&lt;/p&gt;

&lt;p&gt;Live demo: &lt;a href="https://apervashov.github.io/typescript-learning-assistant/" rel="noopener noreferrer"&gt;https://apervashov.github.io/typescript-learning-assistant/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tracker → Handbook → exercises.ts + NOTES.md → tsc → mark Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A prompt like this works well:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm on &lt;code&gt;03) Narrowing&lt;/code&gt;. Here's my attempt. Point me in the right direction, but don't solve it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This one doesn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Solve everything.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the AI ignores your request, remind it. That's exactly why the mentor instructions exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it's different from type-challenges
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;type-challenges&lt;/strong&gt; is great if your goal is mastering advanced type-level programming.&lt;/p&gt;

&lt;p&gt;TS Learn Path is aimed at something more practical: learning the language in roughly the same order as the Handbook while working on exercises that look like code you'd actually write.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;type-challenges&lt;/th&gt;
&lt;th&gt;TS Learn Path&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Focus&lt;/td&gt;
&lt;td&gt;Type-level puzzles&lt;/td&gt;
&lt;td&gt;Handbook-based exercises&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Progress&lt;/td&gt;
&lt;td&gt;Personal&lt;/td&gt;
&lt;td&gt;Git-friendly tracker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Mentor behavior included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Advanced type programming&lt;/td&gt;
&lt;td&gt;Learning and onboarding&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The two projects complement each other rather than compete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who it's for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript developers moving to TypeScript&lt;/li&gt;
&lt;li&gt;Juniors learning with Cursor or Copilot&lt;/li&gt;
&lt;li&gt;Mentors who want something more structured than "watch this playlist"&lt;/li&gt;
&lt;li&gt;Anyone who's tired of copying correct code without understanding why it's correct&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/apervashov/typescript-learning-assistant.git
&lt;span class="nb"&gt;cd &lt;/span&gt;typescript-learning-assistant
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start with &lt;code&gt;01) The Basics&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Treat the AI like a reviewer, not a code generator.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/apervashov/typescript-learning-assistant" rel="noopener noreferrer"&gt;https://github.com/apervashov/typescript-learning-assistant&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Template: &lt;a href="https://github.com/apervashov/typescript-learning-assistant/generate" rel="noopener noreferrer"&gt;https://github.com/apervashov/typescript-learning-assistant/generate&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback welcome
&lt;/h2&gt;

&lt;p&gt;Let me know what can be improved here.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>learning</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
