跳转到主要内容
eLearner.app
模块 7 · 第 1 课(共 2)课程中的13/14~12 min
模块课程(1/2)

使用 tsconfig.json 配置

The tsconfig.json file specifies the root directory of a TypeScript project and the compiler options required to build the project.

Whenever you run tsc in a project directory, the compiler searches for this file to guide its compilation behavior.


Structure of a tsconfig.json File

A typical configuration file looks like this:

Code
{
  "compilerOptions": {
    "target": "es2022",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

The main properties are:

  • compilerOptions: Settings for the compiler.
  • include: Specifies the files or folders to compile.
  • exclude: Specifies the files or folders to ignore during compilation.

Key Compiler Options

Here are some of the most important settings to know:

  1. target: Specifies the version of JavaScript output by the compiler (e.g., es5, es6/es2015, es2020, esnext).
  2. module: Specifies the module system used in the compiled code (e.g., commonjs, esnext, node16).
  3. strict: Enables a broad suite of rigorous type-checking behaviors. It is highly recommended to set this to true for maximum type safety. It enables options like:
    • noImplicitAny: Raises an error on expressions and declarations with an implied any type when no type annotation is provided.
    • strictNullChecks: Prevents assigning null or undefined to types that do not explicitly include them in their union.

Try it yourself

Exercise 1: Handling strictNullChecks

锻炼#ts.m7.l1.e1
尝试:0加载中...

Under the strictNullChecks: true option in tsconfig.json, we cannot assign null or undefined to primitive types. Declare a function named parseAge that accepts an input of type string | null and returns a number if the input is not null and is a valid integer, otherwise it returns 0. Explicitly handle the null case to pass strict compilation.

正在加载编辑器...
显示提示

Check if input is null at the start of the function and return 0 immediately before processing the string.

3 次尝试后可用的解决方案

Exercise 2: Strict Typing without Implicit Any

锻炼#ts.m7.l1.e2
尝试:0加载中...

Under noImplicitAny: true, any parameter whose type cannot be inferred must be explicitly typed. Create a function named processItems that accepts an array items (array of numbers) and a callback function that takes a single number as an argument and returns nothing. Make sure not to use any and type everything explicitly.

正在加载编辑器...
显示提示

Declare the function with signature function processItems(items: number[], callback: (item: number) => void): void.

3 次尝试后可用的解决方案