TypeScript: types, contracts and diagnosis
Learn TypeScript through types, unions, generics, external data and modules. Practice code reading and diagnosis with original questions and cases.
Modules and lessons
Open a lesson to begin. Follow the sequence or revisit any concept.
Static types and runtime values
Separate static checking, transformation and actual values; use inference and unknown without confusing types with data validation.
50 minUnions, narrowing and state models
Trace paths that narrow a union and represent states with required fields, distinguishing static exhaustiveness from external validation.
55 minFunctions and callable contracts
Read function signatures as promises about arguments, receiver and completion; identify contracts hiding data or pending work.
55 minObjects and structural compatibility
Distinguish structural compatibility, excess properties, absence and readonly; project data and separate references when the contract requires isolation.
55 minGenerics and key relationships
Use generics to retain relationships between inputs and results; distinguish constraints, known keys and data validation.
60 minMapped types and conditional models
Derive contracts with mapped and conditional types, control distribution and distinguish a calculated interface from its implementation.
60 minCollections, nullability and mutation
Handle missing positions and configuration without losing valid values; separate readonly access from data ownership and copying.
60 minExternal data and error boundaries
Turn unknown data into bounded commands, distinguishing syntax, contract and failures of the operation using the data.
60 minModules, declarations and host contracts
Connect type contracts to the modules and implementations consumers actually receive.
60 minConfiguration, delivery and migration
Define checkable configuration and gradual migration, linking diagnostics, version and the published artifact.
60 minObjectives and progression
Learn TypeScript through types, unions, generics, external data and modules. Practice code reading and diagnosis with original questions and cases.
Audience
TypeScript learners and development or support teams needing to interpret code and justify integration decisions.
Prerequisites
JavaScript fundamentals: values, functions, objects, arrays, promises and modules. Installing a compiler or executing code is not required to answer assessments.
What you will learn
- Distinguish static guarantees from runtime behavior.
- Retain relationships through unions, generics and mapped types.
- Validate external data and handle absence, mutation and errors.
- Align modules, declarations and configuration with the delivery host.
What is available
10 lessons · 100 regular questions · 20 cases
Internal final assessment: 40 exercises in 90 minutes. Full mock exams are not yet available.
Assessments and mock exams reuse path exercises. They do not award certifications or guarantee passing an external exam.
Scope, review and limitations
Ten lessons with 100 regular questions and 20 original cases. Learn to retain contracts across values, functions, objects and modules, validate external data and interpret delivery configuration. The baseline is TypeScript 7.0 with explicit strict options and host premises. All assessments use single or multiple choice with excerpts and scenarios, without code execution. The final assessment reuses 40 course items in 90 minutes. JavaScript has a separate foundations path; React and Angular will have their own paths.
Internal 40-question assessment in 90 minutes, reusing course items, with single or multiple choice and no code execution. It is not an official exam and awards no external certification.
Independent education and assessment with original questions and scenarios. No affiliation, authorization, sponsorship or endorsement by Microsoft, and no official certification award. Technology names identify the course subjects; all trademarks belong to their respective owners.
References and version
Find the sources, content version and scope of this path.
Path content version
TypeScript 7.0; explicit strict and host configuration
Content reviewed on 13 Oct 2026
Learning sources
- TypeScript: release-apiConsulted on 13 Oct 2026
- TypeScript Handbook: Everyday TypesConsulted on 13 Oct 2026
- TypeScript Handbook: The BasicsConsulted on 13 Oct 2026
- TypeScript Handbook: NarrowingConsulted on 13 Oct 2026
- TSConfig: strictNullChecksConsulted on 13 Oct 2026
Show 56 more references
- TSConfig: noEmitConsulted on 13 Oct 2026
- TypeScript Handbook: More on FunctionsConsulted on 13 Oct 2026
- TypeScript: Optional parameters and default valuesConsulted on 13 Oct 2026
- TypeScript: Optional parameters in callbacksConsulted on 13 Oct 2026
- TypeScript: Overload and implementation signaturesConsulted on 13 Oct 2026
- TypeScript: Declaring this in a functionConsulted on 13 Oct 2026
- TypeScript: Contextual void return typeConsulted on 13 Oct 2026
- TypeScript: Spread arguments and tuple arityConsulted on 13 Oct 2026
- TypeScript: Readonly properties and aliasingConsulted on 13 Oct 2026
- TypeScript: Excess property checksConsulted on 13 Oct 2026
- TypeScript: Interface extension versus intersectionConsulted on 13 Oct 2026
- TypeScript: Index signaturesConsulted on 13 Oct 2026
- TypeScript: Structural compatibilityConsulted on 13 Oct 2026
- TypeScript: exactOptionalPropertyTypesConsulted on 13 Oct 2026
- TypeScript: working with generic type variablesConsulted on 13 Oct 2026
- TypeScript: generic constraintsConsulted on 13 Oct 2026
- TypeScript: using type parameters in generic constraintsConsulted on 13 Oct 2026
- TypeScript: generic parameter defaultsConsulted on 13 Oct 2026
- TypeScript: working with constrained valuesConsulted on 13 Oct 2026
- TypeScript: type parameters should appear twiceConsulted on 13 Oct 2026
- TypeScript: mapping modifiersConsulted on 13 Oct 2026
- TypeScript: key remapping via asConsulted on 13 Oct 2026
- TypeScript: conditional type constraintsConsulted on 13 Oct 2026
- TypeScript: inferring within conditional typesConsulted on 13 Oct 2026
- TypeScript: distributive conditional typesConsulted on 13 Oct 2026
- TypeScript: the keyof type operatorConsulted on 13 Oct 2026
- TypeScript: Indexed access typesConsulted on 13 Oct 2026
- TypeScript: the satisfies operatorConsulted on 13 Oct 2026
- TypeScript: the readonlyarray typeConsulted on 13 Oct 2026
- TypeScript: tuple typesConsulted on 13 Oct 2026
- TypeScript: readonly tuple typesConsulted on 13 Oct 2026
- TypeScript: uncheckedConsulted on 13 Oct 2026
- TypeScript: checked indexed accesses nouncheckedindexedaccessConsulted on 13 Oct 2026
- TypeScript: optional chainingConsulted on 13 Oct 2026
- TypeScript: nullish coalescingConsulted on 13 Oct 2026
- TypeScript: assertion functionsConsulted on 13 Oct 2026
- TypeScript: catch-unknownConsulted on 13 Oct 2026
- TypeScript: unlisted property narrowing with the in operatorConsulted on 13 Oct 2026
- JavaScript: Number.isIntegerConsulted on 13 Oct 2026
- JavaScript: Array.prototype.sortConsulted on 13 Oct 2026
- TypeScript: how javascript modules are definedConsulted on 13 Oct 2026
- TypeScript: import typeConsulted on 13 Oct 2026
- TypeScript: dts filesConsulted on 13 Oct 2026
- TypeScript: bundled typesConsulted on 13 Oct 2026
- TypeScript: your own definitionsConsulted on 13 Oct 2026
- TypeScript: module format detectionConsulted on 13 Oct 2026
- TypeScript: relative file path resolutionConsulted on 13 Oct 2026
- TypeScript: extensionless relative pathsConsulted on 13 Oct 2026
- TypeScript: paths does not affect emitConsulted on 13 Oct 2026
- TypeScript: verbatimConsulted on 13 Oct 2026
- TypeScript: targetConsulted on 13 Oct 2026
- TypeScript: libConsulted on 13 Oct 2026
- TypeScript: no-emit-errorConsulted on 13 Oct 2026
- TypeScript: allow-jsConsulted on 13 Oct 2026
- TypeScript: check-jsConsulted on 13 Oct 2026
- TypeScript: skip-libConsulted on 13 Oct 2026
Independent preparation. Check the objectives, available content and coverage limits when planning your study.
Independent education and assessment with original questions and scenarios. No affiliation, authorization, sponsorship or endorsement by Microsoft, and no official certification award. Technology names identify the course subjects; all trademarks belong to their respective owners.
Microsoft is a trademark of the Microsoft group of companies. This independent path is not affiliated with, authorized, sponsored or endorsed by Microsoft. All other trademarks are the property of their respective owners.