Skip to content

基础类型

约 659 字大约 2 分钟

2025-11-12

基本类型

  • 字符串:string
let lx: string = "小沐沐吖";
  • 数值:number
let lx: number = 18;
  • 布尔值:boolean
let lx: boolean = true;
  • 数组:array - 明确每个成员值类型的数组
let lx1: string[] = ["hello", "world"];
let lx2: Array<number> = [18, 24];
  • 元组:tuple
let lx: [string, number, boolean] = ["hello world", 18, true];
  • 对象:object
let lx1: object = {name: '小沐沐吖'};
let lx2: {name: string, age: number} = {name: '小沐沐吖', age: 18};
let lx3: {name: string, age: numbrt, address?: string} = {name: '小沐沐吖', age: 18};
# address?: string 可选类型
  • 索引签名

定义任意属性的签名

type MyObject = {
  [key: string]: keyof any;
};

let obj: MyObject = {
  name: "小沐沐吖",
  age: 18,
};
  • null
let lx: null = null;

// 非严格模式
lx = undefined;
  • undefined
let lx: undefined = undefined;

// 非严格模式
lx = null;
  • void
let lx: void = null; // 严格模式报错

let lx: void = undefined;

// void 一般用于函数返回值类型,表示无返回值

function lxFun(): void {}
  • any - 任意类型

可以相互赋值

let a: any = 1;
let b: number = 3;

a = b;
b = a;
  • unknow - 不知道的类型

只能赋值给自身或 any 类型

let a: unknown = 1;
let b: number = 3;

a = b;
b = a; // 报错

不能读取属性,不能调用方法

  • never

可以赋值给任何类型

函数抛出异常或无限循环时返回值是 never

function show(): never {
  throw new Error("出错了");
}
  • union - 联合类型

使用|进行连接

let lx: string | number = "小沐沐吖";
lx = 18;

let lxArr: (string | number | boolean)[] = ["小沐沐吖", 18, false];

函数

  • 函数声明
let lx: Function = () => {};

let sum: (a: number, b: number) => number;
sum = (x, y) => {
  return x + y;
};

function show(msg: string) {
  console.log(msg);
}
  • 参数类型
function sum(a: number, b: number) {
  return a + b;
}

// 可选参数
function show(a?: string) {
  console.log(a);
}

// 参数默认值
function log(a: string = "hello world") {
  console.log(a);
}
  • 返回值类型
function sum(a: number, b: number): number {
  return a + b;
}

function show(a: string): void {
  console.log(a);
}

类型推断

没有明确设置类型时,系统会根据值推断变量的类型

  • 字符串:string
let lx = "luoxue"; // lx: string
lx = 1; // 编译报错
  • 数值:number

  • 布尔值:boolean

  • 数组

const lx1 = ['hello', 'world']; // lx1: string[]
lx1.push(18); # 只允许新增 string 类型的值


const lx2 = ['你好', 18]; // lx2: (string | number)[]
lx2.push(true); $ 只允许新增 string number 类型的值
  • 对象
const user = {name: '小沐沐吖', age: 18, open: true};

# 类型推断为

const user: {
    name: string;
    age: number;
    open: boolean;
}

user.city = '杭州'; # 报错不允许添加类型中不存在的属性

类型顺序

  1. 顶级类型(top type):any、unknown
  2. Object
  3. Number、String、Boolean
  4. number、string、boolean
  5. 字面量:1、'小沐沐吖'、false
  6. never

依次为包含关系

let lx: any = 1;
lx = {};
lx = false;
lx = "hello world";
lx = Symbol(1);

豫ICP备18027433号 萌ICP备20240840号 本网站由又拍云提供CDN加速/云存储服务