typescript-fundamentals is a 2019 TypeScript workshop you can still clone
Mike North's 2018 TypeScript Fundamentals Course
At a glance
- What is it?
- The mike-works/typescript-fundamentals repository is the example project behind Mike North's TypeScript Fundamentals course, and it is useful as a self-study reference while being a 2019 era copy pinned to TypeScript 3.7 with a licence that restricts how the exercises can be reused.
- Who is it for?
- typescript-fundamentals suits a developer who wants a concrete, worked reference for the TypeScript topics taught in a structured course, and it suits a trainer who wants to see how a teaching repo is wired together.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 7 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A course repository that teaches by example, not by library
This repository is not a TypeScript utility, a type definition package, or a starter template for production code. It is the example project behind the Mike.Works TypeScript Fundamentals course, and that changes how you should read it. The point is to give a learner a working codebase to open, modify and break while the course is taught. The README states plainly that it is the example project used for the course, and the outline and slides live on separate sites rather than in the repository, so the repository is the laboratory and the prose is elsewhere. The audience is therefore two groups: a developer working through the course on their own, and an instructor who wants a prepared codebase for a session. Neither of those is the same as a production reference, and the pinned versions make that obvious once you open package.json.
The 2.x branch targets TypeScript 3.x, the 1.x branch is from 2017
The README opens with a note about versions, and it is the most decision-relevant paragraph in the file. This branch holds the 2.x version of the workshop, released in 2019 and aimed at TypeScript 3.x, and the 1.x version from 2017 lives on a separate branch. That framing tells you two things. First, the course is organised around a language generation from 2019, so topics that were later added to TypeScript, and changes to the compiler's behaviour since then, are simply not covered. Second, the repository is explicit about its own version boundaries rather than leaving you to guess, which is a good sign for a teaching artefact. If you are learning TypeScript today, the type system you use in your editor is a different compiler from the one this project pins, and you should treat the code as illustrative of ideas rather than as current best practice.
A lerna monorepo with examples, challenges and notes as workspaces
The repository layout is a Yarn workspaces monorepo managed by lerna. The package.json declares three workspace globs, and the top-level entries match them: examples/ holds a single hello-ts example, challenges/ holds the exercises, and notes/ holds the supporting notes. The root scripts are the standard lerna fan-out plus a bit of glue.
"scripts": {
"clean": "lerna run clean && lerna clean --yes && lerna bootstrap",
"build": "lerna run build",
"test": "lerna run test",
"postinstall": "lerna link",
"semantic-release": "semantic-release"
},A postinstall hook that runs lerna link is what connects the local packages to each other, which is why a plain install is not enough on its own if a workspace is added later. The clean script goes further than a clean: it removes the lerna cache and runs bootstrap again. The build and test scripts simply delegate to every workspace, so a single yarn test at the root fans out to the per-package test runners.
The toolchain is pinned to a 2019 stack and a 12 era Node
Every devDependency carries an exact version, which is the right call for a teaching repo and a real constraint for anyone running it. TypeScript is pinned to 3.7.7, ts-node to 8.10.2, eslint to 6.8.0, mocha to 6.2.3, chai to 4.3.4, lerna to 3.22.1, husky to 3.1.0 and dtslint to 0.9.9. The Node type definitions sit at 12.20.16. The @types packages, the eslint tooling and the release tooling all come from the same era, and the @typescript-eslint packages are at 2.34.0. The project also wires up commitlint with the conventional config, a husky commit-msg hook, semantic-release extending @mike-works/workshop-semantic-release-config, and renovate for dependency updates. The result is a repository that shows a complete, opinionated workflow for a TypeScript library, which is arguably more instructive than the type examples themselves.
The licence splits the repository in two
The licensing here is unusual and deserves attention before you copy anything. The general project licence is BSD 3-clause, but the README states that the exercises themselves are proprietary and licensed on a per-individual basis, usually as a result of purchasing a ticket to a public workshop or participating in a private training. The README then spells out what is permitted: using everything except the exercises and their tests to build your own training content, copying code from build scripts, configuration files, tests and development harnesses that are not part of the exercises, and, as the holder of an individual licence, using exercise code in your own project that is not training related. What is not permitted without express written consent reads just as specifically: running your own workshops from this project or any subset of its exercises, writing a book using the exercise code, and recording a screencast containing one or more exercises. There is a separate exerciseLICENSE file in the repository, and the copyright block at the end of the README repeats that the content may not be used for workshops, training or any other form of instructing or teaching developers without express written consent.
Setting up the project is clone and install
The setup instructions are short, and they assume a specific toolchain. The README lists the dependencies as Node.js, with Volta suggested to make setup easy, plus Yarn, Visual Studio Code, and TypeScript and ESLint installed globally. The project itself is cloned and installed with two commands.
git clone https://github.com/mike-works/typescript-fundamentals
cd typescript-fundamentalsyarnThe install step is what triggers the postinstall hook, so the workspaces get linked as a side effect of yarn rather than as a separate manual step. What the README does not cover is the current state of the world. It does not say which Node version to use, it does not describe how to run a single exercise in isolation, and it does not mention the two-phase layout of the solution branches. The .travis.yml file and the ts.code-workspace file are the only other entry points for how the code is meant to be opened, and the workspace file is what makes the multi-package layout navigable in an editor.
Where this repository stops being useful
There are two clear boundaries. The first is currency. A course built for TypeScript 3.x cannot tell you about the features that arrived after it, and the pinned toolchain means that running it today means running a 2019 compiler and a 2019 lint stack. The second is the licensing, and it is the harder one. If your intent is to teach, record, or write a book from these exercises, the README tells you plainly that this is not permitted without express written consent, and it does not describe a public or paid path to obtain that consent. That makes the repository a reference for reading and a curriculum for an authorised participant, and not a source of exercise content to adapt. For a team wanting a modern TypeScript codebase to learn from, the language's own documentation and a current framework repository serve that purpose better, because neither carries a licence clause about teaching.
Editorial conclusion
typescript-fundamentals suits a developer who wants a concrete, worked reference for the TypeScript topics taught in a structured course, and it suits a trainer who wants to see how a teaching repo is wired together. It is the wrong tool for a team that wants a current TypeScript reference, because the pinned toolchain is TypeScript 3.7.7 with Node types from the 12 series, and it is the wrong tool for anyone who intends to reuse the exercises, because the repository's own copyright statement forbids using the content for workshops, training or teaching without express written consent. Before building it, read the exerciseLICENSE file and the licence section of the README, run yarn at the repository root to link the workspaces, and check whether the pinned versions still install on your Node version. The last push was on 2026-10-18, while the newest tag is v2.0.1 from 2019-03-18.
Frequently asked questions
What is the mike-works/typescript-fundamentals repository?
It is the example project used for the Mike.Works TypeScript Fundamentals course, a workshop repository containing examples, challenges and notes rather than a publishable library. The package is marked private in its package.json.
How do I set up the typescript-fundamentals project?
The README says to clone the repository, change into the project folder and run yarn to download and install the dependencies. It lists Node.js, Yarn, Visual Studio Code, and globally installed TypeScript and ESLint as prerequisites.
Which TypeScript version does the typescript-fundamentals project use?
The package.json pins typescript to 3.7.7, and the README states that this branch is for the 2.x workshop released in 2019 for TypeScript 3.x. The 1.x version from 2017 is on a separate branch.
Can I reuse the exercises from typescript-fundamentals in my own training?
The README states that the exercises are proprietary and licensed per individual, and that using the project or any subset of the exercises to run your own workshops, writing a book with the code, or recording a screencast of the exercises is not permitted without express written consent.
What is the licence of the typescript-fundamentals repository?
The general project licence is BSD 3-clause with a LICENSE file in the repository root, but the exercises themselves are proprietary and covered separately by the exerciseLICENSE file and the README licence section.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/mike-works-typescript-fundamentals)Was this useful?