TypeScript00:基础数据类型

TS 是 JS 的超集

JavaScript 与 TypeScript 的关系

TS 数据类型

数值

ts 复制代码
let age: number = 30;

字符串

ts 复制代码
let name: string = "Alice";

布尔值

ts 复制代码
let isDone: boolean = true;

array 数组

可以使用 type\[\] 或 Array<type> 两种方式表示

ts 复制代码
let list: [] = [1, "hello", 3];

let list: number[] = [1, "hello", 3]; //Type 'string' is not assignable to type 'number'.

let names: Array<string> = ["Alice", "Bob"];

tuple 元组

表示已知数量和类型的数组。

每个元素可以是不同的类型,适合表示固定结构的数据。

ts 复制代码
let person: [string, number] = ["Alice", 25];

let a: [string, number] = ["Alice", 25, 1]; //Type '[string, number, number]' is not assignable to type '[string, number]'.Source has 3 element(s) but target allows only 2.

let b: [string, number] = [2, 25]; //Type 'number' is not assignable to type 'string'.

enum 枚举

用来定义一组命名常量。

默认情况下枚举的值从 0 开始递增。

自定义枚举值会影响后续值,字符串枚举必须为所有成员显式赋值

ts 复制代码
enum Color {
  Red,
  Green,
  Blue,
}

let favoriteColor: Color = Color.Green;
console.log(favoriteColor); // 1

console.log(Color.Red); // 0
console.log(Color[1]); // Green
console.log(Color.Blue); // 2

enum Color1 {
  Red,
  Green = 2,
  Yellow = 100,
  Blue,
}

console.log(Color1.Red); // 0
console.log(Color1.Blue); // 101

enum Direction {
  Up = "UP",
  Down, //Enum member must have initializer.
  Left = 1,
}

void 空类型

用于没有返回值的函数。

声明变量时,类型 void 意味着只能赋值 null 或 undefined。

ts 复制代码
function logMessage(message: string): void {
  console.log(message);
}

logMessage("Hello, TypeScript!"); //Hello, TypeScript!

let x: void = 1; //Type 'number' is not assignable to type 'void'.

null 和 undefined

  • null 表示 "空值或空引用"。null 只有一个值,即 null。typeof 检测 null 返回 object。

  • undefined 表示 "未设置值"。undefined 只有一个值,即 undefined。typeof 一个没有值的变量会返回 undefined。undefined 不是"未定义变量",undefined 是已声明但未赋值的变量默认值,使用"未定义变量"会报错

在默认情况下,它们是其他类型(不包括 never)的子类型,可以赋值给其它类型

ts 复制代码
let x: number;
x = 1;
x = undefined;
x = null;
console.log(x); // null

never 类型

表示不会有返回值,通常用于抛出错误或进入无限循环的函数,表示该函数永远不会正常结束

ts 复制代码
function throwError(message: string): never {
  throw new Error(message);
}

never 是所有类型(包括 null 和 undefined)的子类型

ts 复制代码
let x: null;
x = never; //Type 'never' is not assignable to type 'null'.

any 类型

any 是顶级类型,表示任意类型,任何值都可以赋值给 any,会忽略类型检查

ts 复制代码
let randomValue1: any = 42;
randomValue = "hello";
console.log(randomValue); // hello

let randomValue1: number = 42;
randomValue1 = "hello"; //Type 'string' is not assignable to type 'number'.

unknown 不确定的类型

与 any 类似,但更严格。必须经过类型检查后才能赋值给其他类型变量。

ts 复制代码
let value: unknown = "Hello";

if (typeof value === "string") {
  let message: string = value;
}

object 对象类型

ts 复制代码
let person: object = { name: "Alice", age: 30 };
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师3 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学3 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端