Bird
Raised Fist0
Typescriptprogramming~20 mins

DefinitelyTyped and @types packages in Typescript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
DefinitelyTyped Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output when using a missing @types package?

Consider this TypeScript code that imports a library without an installed @types package. What will the TypeScript compiler report?

Typescript
import _ from 'lodash';

const result = _.chunk([1, 2, 3, 4], 2);
console.log(result);
ACompilation warning only, but code runs fine.
BCompilation error: Cannot find module 'lodash' or its corresponding type declarations.
CRuntime error: '_' is undefined.
DNo compilation error; the code compiles and runs, but TypeScript treats '_' as 'any' type.
Attempts:
2 left
💡 Hint

Think about what happens if TypeScript has no type info but the package is installed.

🧠 Conceptual
intermediate
1:30remaining
Why use the DefinitelyTyped repository?

What is the main purpose of the DefinitelyTyped repository in the TypeScript ecosystem?

ATo host community-maintained type definitions for JavaScript libraries that lack built-in TypeScript types.
BTo compile TypeScript code into JavaScript automatically.
CTo provide official runtime implementations of popular JavaScript libraries.
DTo manage package versions for npm.
Attempts:
2 left
💡 Hint

Think about what type definitions are and who maintains them when libraries don't provide their own.

🔧 Debug
advanced
2:00remaining
Identify the error caused by missing @types package

Given this TypeScript code snippet, what error will the compiler show if @types/express is not installed?

Typescript
import express from 'express';

const app = express();
app.get('/', (req, res) => {
  res.send('Hello World');
});
AError: Cannot find module 'express' or its corresponding type declarations.
BError: Property 'get' does not exist on type 'any'.
CNo error; code compiles and runs fine.
DError: Cannot find name 'express'.
Attempts:
2 left
💡 Hint

Consider what happens when the type declarations for a module are missing.

📝 Syntax
advanced
1:30remaining
Which import syntax correctly uses @types package types?

Assuming @types/moment is installed, which import statement correctly imports the moment library with types?

Aimport { moment } from 'moment';
Bimport * as moment from 'moment';
Cconst moment = require('moment');
Dimport moment from 'moment';
Attempts:
2 left
💡 Hint

Check the recommended import style for ES modules with default export.

🚀 Application
expert
3:00remaining
How to add types for a JavaScript library without existing @types package?

You want to use a JavaScript library foo-lib in your TypeScript project, but there is no @types/foo-lib package available. What is the best way to add type safety?

AUse <code>declare module 'foo-lib';</code> in a global .ts file without any type details.
BIgnore type errors and use <code>any</code> type everywhere for <code>foo-lib</code> imports.
CCreate a <code>foo-lib.d.ts</code> file with minimal type declarations and include it in your project.
DFork DefinitelyTyped and submit a pull request with full type definitions before using the library.
Attempts:
2 left
💡 Hint

Think about a practical way to get some type safety quickly.

Practice

(1/5)
1. What is the main purpose of the @types packages in TypeScript?
easy
A. To provide type definitions for JavaScript libraries
B. To compile TypeScript code into JavaScript
C. To run JavaScript code in the browser
D. To create new JavaScript libraries

Solution

  1. Step 1: Understand the role of @types packages

    @types packages contain type definitions that describe the shape and types of JavaScript libraries for TypeScript.
  2. Step 2: Identify the main purpose

    They help TypeScript understand JavaScript libraries by providing type information, enabling better type checking and editor support.
  3. Final Answer:

    To provide type definitions for JavaScript libraries -> Option A
  4. Quick Check:

    @types = type definitions [OK]
Hint: Remember: @types adds types for JS libs [OK]
Common Mistakes:
  • Confusing @types with compilers
  • Thinking @types runs code
  • Assuming @types creates libraries
2. Which of the following is the correct way to install type definitions for the lodash library using npm?
easy
A. npm install @types/lodash
B. npm install lodash-types
C. npm install types-lodash
D. npm install lodash/@types

Solution

  1. Step 1: Recall the naming convention for type packages

    Type definitions from DefinitelyTyped are published under the @types scope, so the package name is @types/library-name.
  2. Step 2: Match the correct npm install command

    For lodash, the correct package is @types/lodash, so the command is npm install @types/lodash.
  3. Final Answer:

    npm install @types/lodash -> Option A
  4. Quick Check:

    Type packages start with @types/ [OK]
Hint: Type packages always start with @types/ [OK]
Common Mistakes:
  • Using incorrect package names without @types/
  • Mixing up package and type package names
  • Trying to install types as normal packages
3. Given the following TypeScript code, what will be the output if @types/lodash is NOT installed?
import _ from 'lodash';

const numbers = [1, 2, 3];
const doubled = _.map(numbers, n => n * 2);
console.log(doubled);
medium
A. [] (empty array)
B. [2, 4, 6]
C. Runtime error: _.map is not a function
D. TypeScript error: Cannot find module 'lodash' or its corresponding type declarations

Solution

  1. Step 1: Understand the role of type definitions in TypeScript

    Without @types/lodash, TypeScript cannot find type information for lodash, causing a compile-time error.
  2. Step 2: Identify the error message

    The error will say it cannot find the module or its type declarations, preventing compilation.
  3. Final Answer:

    TypeScript error: Cannot find module 'lodash' or its corresponding type declarations -> Option D
  4. Quick Check:

    No types = compile error [OK]
Hint: No @types means TypeScript can't find types [OK]
Common Mistakes:
  • Confusing runtime errors with compile errors
  • Expecting code to run without types installed
  • Thinking JavaScript errors appear instead
4. You installed @types/express but still get errors about missing types when importing express. What is the most likely cause?
medium
A. You need to restart your TypeScript server or IDE
B. You installed the wrong version of @types/express
C. You forgot to install the express package itself
D. You must import types explicitly using import type

Solution

  1. Step 1: Check dependencies

    Type definitions only provide types; the actual library must be installed separately.
  2. Step 2: Identify missing library

    If express is not installed, importing it causes errors despite having types.
  3. Final Answer:

    You forgot to install the express package itself -> Option C
  4. Quick Check:

    Types need actual library installed [OK]
Hint: Always install both library and its @types [OK]
Common Mistakes:
  • Assuming types include the library code
  • Not restarting IDE after install
  • Misusing import type for libraries
5. You want to use a JavaScript library foo-lib in your TypeScript project, but no @types/foo-lib package exists. What is the best way to add type support?
hard
A. Ignore type errors and use any everywhere
B. Write a custom declaration file foo-lib.d.ts with needed types
C. Install @types/foo-lib anyway, it will work
D. Rewrite the library in TypeScript

Solution

  1. Step 1: Understand missing type definitions

    If no official @types package exists, you can create your own declaration file to describe the library's types.
  2. Step 2: Choose best practice

    Writing a .d.ts file lets TypeScript check your code and improves editor support without rewriting the library.
  3. Final Answer:

    Write a custom declaration file foo-lib.d.ts with needed types -> Option B
  4. Quick Check:

    Custom .d.ts files add missing types [OK]
Hint: Create .d.ts files for missing types [OK]
Common Mistakes:
  • Ignoring types and risking bugs
  • Expecting non-existent @types packages
  • Thinking rewriting library is easiest
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard