Open code, practice, and notes →
Download source with English comments · for reading
TypeScript · 21 Template Literal Event Names
Series contents · Technology map
Stage: Validation and Type Transformations · Editable example · Storage ID: typescript-step-21
Goals and learning outcomes
- Distinguish payload types for 2 different events.
- Record name typos and payload errors separately.
Prerequisites
Work and experiment records from Unit 20, “Conditional Types and Distribution”
Key concepts and explanations
String Contracts
Template literal types define permitted string combinations. Arbitrary strings still need their runtime contents checked.
Event Mapping
Connect event names and payload types with a map. The relationship can be lost if names and values widen separately.
Practice setup
First check the execution scope guidance on the example screen. The following environment is for extending the assignment in a separate project. Implement it yourself in a separate local project and check it with browser developer tools and tsc --noEmit. Record the installed tsc version in a separate TypeScript project. Enable strict in tsconfig.json and check with tsc --noEmit, then open the runtime exercise using compiled output or a local development server. Do not assume the browser executes TS type annotations directly.
The linked example is a starting point. It does not implement every task below. Complete work beyond its supported scope in a separate project.
Practice tasks
- In event-names.ts, prepare conditions for a titleChanged string and an invalid numeric payload.
- Create Changed names for note fields and write a function accepting the payload for each name.
- Run with a titleChanged string and an invalid numeric payload. Results to check: Distinguish payload types for 2 different events. Record name typos and payload errors separately. Record expected and actual results separately.
Variables to observe
| Variable | Baseline | Change | Expected change / hypothesis |
|---|---|---|---|
| payload | string | number | Pre-run hypothesis: the titleChanged call will be rejected. Keep other conditions fixed and record the actual result separately after running. |
Predictions in this table are not measured results. Change one condition at a time and record why the actual result differs.
Completion criteria
- Distinguish payload types for 2 different events.
- Record name typos and payload errors separately.
Self-check
- Can every string value fit a narrow event type?
- Where do you preserve the relationship between name and payload?
Official references
Linked example and execution scope
Example source · Runtime environments and limits
The preview is a JavaScript runtime boundary experiment. It does not run TypeScript diagnostics. Check lesson.ts locally with tsc --strict --noEmit --lib ES2023,DOM.
Source code and records are not overwritten automatically. Resetting an existing example also preserves your notes.
Next learning
Previous: Conditional Types and Distribution · Next: DOM Types and null Checks