Strict mode prevents assigning null to a string unless you allow it explicitly.
Typescript
// Example of strict null checks catching errorslet name: string = null; // Error in strict mode
Strict mode helps catch type mistakes like assigning a string to a number variable.
Typescript
// Without strict mode, this might not cause an errorlet age;
age = 25;
age = 'twenty-five'; // No error without strict mode
Sample Program
This program greets a person by name. Strict mode prevents passing null by mistake.
Typescript
function greet(name: string) {
console.log(`Hello, ${name.toUpperCase()}!`);
}
greet('Alice');
// greet(null); // Uncommenting this line causes error in strict mode
OutputSuccess
Important Notes
Strict mode helps you find problems before running your code.
It may feel strict at first, but it makes your code more reliable.
You can gradually enable strict mode in existing projects.
Summary
Strict mode makes TypeScript check your code more carefully.
It helps catch bugs early and improves code quality.
Enable it by setting "strict": true in tsconfig.json.
Practice
(1/5)
1. What is the main purpose of enabling strict mode in TypeScript?
easy
A. To allow JavaScript code to run without any type checking
B. To make TypeScript run faster by skipping type checks
C. To make TypeScript check your code more carefully and catch errors early
D. To disable all compiler warnings and errors
Solution
Step 1: Understand what strict mode does
Strict mode in TypeScript enables more thorough type checking to find mistakes early.
Step 2: Compare options with strict mode purpose
Only To make TypeScript check your code more carefully and catch errors early correctly describes strict mode as making TypeScript check code carefully and catch errors early.
Final Answer:
To make TypeScript check your code more carefully and catch errors early -> Option C
Quick Check:
Strict mode = careful checks [OK]
Hint: Strict mode means more checks, fewer bugs [OK]
Common Mistakes:
Thinking strict mode disables checks
Confusing strict mode with performance settings
Believing strict mode allows ignoring types
2. Which setting in tsconfig.json enables strict mode in TypeScript?
easy
A. "strictCheck": true
B. "strict": true
C. "enableStrict": true
D. "typeCheck": true
Solution
Step 1: Identify the correct tsconfig.json key for strict mode
The official key to enable strict mode is "strict" set to true.
Step 2: Eliminate incorrect options
Options A, B, and C are not valid TypeScript compiler options for strict mode.
Final Answer:
"strict": true -> Option B
Quick Check:
Strict mode key = "strict" [OK]
Hint: Look for "strict": true in tsconfig.json [OK]
Common Mistakes:
Using incorrect keys like "strictCheck"
Confusing strict mode with other compiler options
Forgetting to put the key inside tsconfig.json
3. What will happen if you run this TypeScript code with strict mode enabled?
let name: string;
console.log(name.length);
medium
A. It will cause a compile-time error because 'name' is used before being assigned
B. It will print the length of the string
C. It will print 'undefined'
D. It will run without errors and print 0
Solution
Step 1: Understand variable initialization in strict mode
With strict mode, TypeScript requires variables to be initialized before use.
Step 2: Analyze the code behavior
The variable 'name' is declared but not assigned a value before accessing 'name.length', causing a compile-time error.
Final Answer:
It will cause a compile-time error because 'name' is used before being assigned -> Option A
Quick Check:
Uninitialized variable use = error [OK]
Hint: Uninitialized variables cause errors in strict mode [OK]
Common Mistakes:
Assuming variables default to empty string
Thinking code runs without errors
Confusing runtime errors with compile-time errors
4. Identify the error in this TypeScript code when strict mode is enabled and fix it:
function greet(name: string | undefined) {
console.log(name.toUpperCase());
}
medium
A. Error: 'name' might be undefined; fix by checking if 'name' exists before calling toUpperCase()
B. Error: 'toUpperCase' is not a function; fix by casting 'name' to string
C. No error, code is correct
D. Error: Missing return type; fix by adding ': void' to function
Solution
Step 1: Understand strict null checks
With strict mode, TypeScript requires checking if a variable that can be undefined is actually defined before using it.
Step 2: Identify the error and fix
Calling 'toUpperCase()' on 'name' without checking if it's undefined causes an error. Fix by adding a check like 'if (name)'.
Final Answer:
Error: 'name' might be undefined; fix by checking if 'name' exists before calling toUpperCase() -> Option A
Quick Check:
Check undefined before method call [OK]
Hint: Check for undefined before using variable methods [OK]
Common Mistakes:
Ignoring possible undefined values
Trying to cast without checks
Assuming no error without strict mode
5. You have this TypeScript code with strict mode enabled:
interface User {
id: number;
name?: string;
}
function printUserName(user: User) {
console.log(user.name.toUpperCase());
}
How can you fix the code to avoid errors and safely print the user's name in uppercase if it exists?
hard
A. Assign a default value: console.log((user.name || '').toUpperCase());
B. Remove the question mark from 'name' in interface to make it required
C. Use a non-null assertion: console.log(user.name!.toUpperCase());
D. Add a check: if (user.name) console.log(user.name.toUpperCase());
Solution
Step 1: Understand optional properties and strict mode
The 'name' property is optional, so it can be undefined. Strict mode requires checking before use.
Step 2: Evaluate options to safely access 'name'
Add a check: if (user.name) console.log(user.name.toUpperCase()); safely checks if 'name' exists before calling 'toUpperCase()', avoiding errors. Options B, C, and D have drawbacks or risks.
Final Answer:
Add a check: if (user.name) console.log(user.name.toUpperCase()); -> Option D
Quick Check:
Check optional before use = safe code [OK]
Hint: Check optional properties before use in strict mode [OK]
Common Mistakes:
Using non-null assertion without guarantee
Assuming optional properties are always defined
Removing optional marker without reason
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.