Pattern Matching with Template Literals in TypeScript
📋 What You'll Learn
💡 Why This Matters
🌍 Real World
Pattern matching with template literals helps in validating codes, IDs, or formatted strings in many applications like form validation or data filtering.
💼 Career
Understanding pattern matching and template literals is useful for frontend and backend developers to handle string data efficiently and write clean, readable code.
Progress0 / 4 steps
1
Create the array of strings
Create an array called codes with these exact string values: 'abc123', 'xyz789', 'abc456', 'def123', 'abc789'.
Typescript
Hint
Use square brackets [] to create an array and separate strings with commas.
2
Create the pattern string with template literals
Create a constant string called pattern using template literals that matches strings starting with 'abc' and ending with any three digits. Use the template literal syntax with backticks and a placeholder for the digits as ${'\d\d\d'}.
Typescript
Hint
Use backticks ` to create a template literal. Use ${} to insert a pattern for three digits as a string.
3
Filter strings matching the pattern
Create a new array called matchingCodes by filtering codes. Use the filter method with a function that uses a regular expression to test if each code matches the pattern ^abc\d{3}$. Use the exact variable names matchingCodes and codes.
Typescript
Hint
Use filter with a function that returns true if the code matches the regex /^abc\d{3}$/.
4
Print the matching codes
Use console.log to print the matchingCodes array.
Typescript
Hint
Use console.log(matchingCodes); to show the filtered array.
Practice
(1/5)
1. What does pattern matching with template literals in TypeScript primarily help you do?
easy
A. Create new variables dynamically
B. Automatically generate functions from strings
C. Change the type of a variable at runtime
D. Check if a string fits a specific shape or format
Solution
Step 1: Understand the purpose of pattern matching
Pattern matching with template literals is used to verify if strings follow a certain pattern or format.
Step 2: Relate to template literals usage
Template literals allow embedding expressions and patterns to check string shapes easily.
Final Answer:
Check if a string fits a specific shape or format -> Option D
Quick Check:
Pattern matching = Check string shape [OK]
Hint: Pattern matching checks string shapes, not variable types [OK]
Common Mistakes:
Confusing pattern matching with variable creation
Thinking it changes variable types
Assuming it generates functions automatically
2. Which of the following is the correct syntax to use a template literal pattern in a TypeScript type check?
easy
A. type ID = `${string}-${number}`;
B. type ID = '${string}-${number}';
C. ;`}rebmun{$-}gnirts{$` = DI epyt
D. type ID = `${string}-${number}`
Solution
Step 1: Identify correct template literal syntax
Template literals use backticks (`) and embed types inside ${} without quotes.
Step 2: Check for correct punctuation
type ID = `${string}-${number}`; correctly uses backticks and ${} with no extra quotes.
Final Answer:
type ID = `${string}-${number}`; -> Option A
Quick Check:
Backticks + ${} = correct syntax [OK]
Hint: Use backticks and ${} without quotes for template types [OK]
Common Mistakes:
Using single or double quotes instead of backticks
Putting quotes inside ${} expressions
Missing backticks around the pattern
3. What will be the result of this TypeScript code snippet?
type Email = `${string}@${string}.com`;
function isEmail(value: string): value is Email {
return /.+@.+\.com$/.test(value);
}
console.log(isEmail('user@example.com'));
console.log(isEmail('user@example.org'));
medium
A. true\ntrue
B. false\ntrue
C. true\nfalse
D. false\nfalse
Solution
Step 1: Understand the Email type pattern
The Email type expects strings like 'something@something.com'.
Step 2: Analyze the isEmail function
The regex checks if the string ends with '.com' after an '@' symbol.
Step 3: Check the console.log outputs
'user@example.com' matches the regex, so true; 'user@example.org' does not, so false.
Final Answer:
true
false -> Option C
Quick Check:
Regex matches .com only = true, false [OK]
Hint: Regex matches only .com emails, others return false [OK]
Common Mistakes:
Assuming .org matches .com pattern
Ignoring regex anchors
Confusing true/false order in output
4. Identify the error in this TypeScript code using template literal pattern matching:
type Phone = `${number}-${number}-${number}`;
function isPhone(value: string): value is Phone {
return /^\d{3}-\d{3}-\d{4}$/.test(value);
}
medium
A. The Phone type pattern does not match the regex format
B. The regex pattern is missing anchors
C. Template literals cannot use number types inside ${}
D. The function should return a boolean, not a type predicate
Solution
Step 1: Compare Phone type and regex pattern
Phone type expects three numbers separated by dashes, but each ${number} matches any number, not fixed digits.
Step 2: Check regex pattern details
The regex expects exactly 3 digits, then 3 digits, then 4 digits, which doesn't align with the Phone type's generic number placeholders.
Final Answer:
The Phone type pattern does not match the regex format -> Option A
Quick Check:
Type pattern and regex must align [OK]
Hint: Match template literal types exactly with regex patterns [OK]
Common Mistakes:
Assuming ${number} matches fixed digit counts
Ignoring regex anchors (though present here)
Confusing return type of type predicate functions
5. Given this TypeScript code, what will be the output?
type UserID = `user_${number}`;
function parseUserID(id: string): UserID | null {
if (id.match(/^user_\d+$/)) {
return id as UserID;
}
return null;
}
console.log(parseUserID('user_123'));
console.log(parseUserID('admin_123'));
hard
A. null\nnull
B. 'user_123'\nnull
C. 'user_123'\n'user_123'
D. null\n'user_123'
Solution
Step 1: Understand UserID type pattern
UserID must start with 'user_' followed by a number.
Step 2: Analyze parseUserID function
The function returns the id cast as UserID if it matches the regex /^user_\d+$/, else returns null.
Step 3: Evaluate console.log outputs
'user_123' matches regex, so returns 'user_123'; 'admin_123' does not, so returns null.
Final Answer:
'user_123'
null -> Option B
Quick Check:
Regex match returns id, else null [OK]
Hint: Regex match controls return; unmatched returns null [OK]
Common Mistakes:
Assuming 'admin_123' matches user pattern
Confusing return types with casting
Ignoring regex anchors and pattern
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.