解答

TypeScript 常用数据类型与类型注解指南

一、原始数据类型

类型描述示例
string字符串类型,表示文本数据let name: string = "Alice";
number数值类型(含整数、浮点数、二进制等)let age: number = 25;
boolean布尔类型,truefalselet isDone: boolean = false;
null表示“无值”,需在严格模式下使用let data: null = null;
undefined表示未初始化或未定义的变量let value: undefined = undefined;
symbol唯一且不可变的值(ES6+)const key: symbol = Symbol();
bigint大整数类型(后缀为 nlet big: bigint = 1000n;

二、特殊类型

类型描述示例
any禁用类型检查,允许赋值任何类型(慎用)let dynamic: any = "Hello"; dynamic = 1;
unknown安全的顶层类型,需类型校验后才能操作let val: unknown = fetchData(); if (typeof val === "string") { ... }
void表示函数无返回值(默认返回 undefinedfunction log(s: string): void { console.log(s); }
never表示永不返回值的函数(如抛出异常或死循环)function error(msg: string): never { throw new Error(msg); }

三、类型注解定义方式

1. 变量声明

  let count: number = 10;
const message: string = "Hello, TypeScript!";
  

2. 函数参数与返回值

  // 函数返回值类型注解
function sum(a: number, b: number): number {
  return a + b;
}

// 箭头函数
const greet = (name: string): void => {
  console.log(`Hi, ${name}!`);
};
  

3.复杂类型组合

使用联合类型(|)、类型别名或接口:

  // 联合类型
let id: string | number = "ID-123";
id = 456;

// 类型别名
type User = {
  name: string;
  age?: number;  // 可选属性
};
const user: User = { name: "Bob" };
  

4. 类型断言

强制明确值的类型:

  const input: unknown = "123";
const num: number = parseInt(input as string);  // 断言为 string 类型

// 或使用尖括号语法(不推荐在JSX中使用)
const anotherNum: number = <number>input;
  

四、最佳实践

避免使用 any:尽量用更精确的类型(如 unknown)或联合类型替代。

开启严格模式:在 tsconfig.json 中设置 strict: true,强制处理 null/undefined。

优先用类型推断:如 let age = 30 隐式推断为 number,无需显式注解。

Last updated 06 Mar 2025, 13:07 +0800 . history