首页 > 其他分享 >TypeScript 的类型

TypeScript 的类型

时间:2025-01-01 22:34:58浏览次数:1  
标签:TypeScript string number typescriptCopy Code let 类型

在 TypeScript 中,类型用于定义变量、函数参数、返回值等的结构。以下是 TypeScript 中常见的类型及其相关概念:

1. 基本类型 (Primitive Types)

这些类型用于定义最基础的数据结构:

  • number: 数字类型,支持整数和浮点数。

    typescriptCopy Code
    let age: number = 30;
    let price: number = 99.99;
  • string: 字符串类型。

    typescriptCopy Code
    let name: string = "John";
    let message: string = `Hello, ${name}`;
  • boolean: 布尔值类型,只有 truefalse 两个值。

    typescriptCopy Code
    let isActive: boolean = true;
  • null: 空值类型,表示无值。

    typescriptCopy Code
    let value: null = null;
  • undefined: 未定义类型,表示一个变量未被赋值时的默认状态。

    typescriptCopy Code
    let value: undefined = undefined;
  • symbol: ES6 引入的一种新的基本数据类型,表示唯一的值。

    typescriptCopy Code
    let sym: symbol = Symbol('description');
  • bigint: 支持大整数类型,适用于大于 2^53 - 1 或小于 -2^53 + 1 的整数。

    typescriptCopy Code
    let bigNum: bigint = 1234567890123456789012345678901234567890n;

2. 对象类型 (Object Types)

  • object: 表示一个非原始类型,通常用于定义对象的结构。

    typescriptCopy Code
    let obj: object = { name: 'John', age: 30 };
  • 对象字面量类型: 可以显式地定义对象的结构。

    typescriptCopy Code
    let person: { name: string, age: number } = { name: 'Alice', age: 25 };

3. 数组类型 (Array Types)

  • Array<type>: 定义元素类型相同的数组。

    typescriptCopy Code
    let numbers: Array<number> = [1, 2, 3];
  • type[]: 另一种数组的写法,等同于 Array<type>

    typescriptCopy Code
    let names: string[] = ['Alice', 'Bob', 'Charlie'];

4. 元组类型 (Tuple Types)

元组是一种已知元素数量和类型的数组。

typescriptCopy Code
let tuple: [string, number] = ['Alice', 30];

元组支持不同类型的元素,但要求严格按位置和类型定义。

5. 函数类型 (Function Types)

函数类型用于描述函数的参数和返回值类型。

typescriptCopy Code
let add: (a: number, b: number) => number = (a, b) => a + b;

6. 联合类型 (Union Types)

联合类型允许一个变量拥有多个类型。

typescriptCopy Code
let value: string | number = "Hello";
value = 42;  // 也可以是数字

7. 交叉类型 (Intersection Types)

交叉类型用于组合多个类型,表示一个变量同时具有多个类型。

typescriptCopy Code
type A = { name: string };
type B = { age: number };
type C = A & B;

let person: C = { name: "Alice", age: 30 };

8. 字面量类型 (Literal Types)

字面量类型指的是使用特定的值作为类型,例如:特定的字符串、数字等。

typescriptCopy Code
let direction: "left" | "right" = "left";
let score: 10 | 20 | 30 = 20;

9. 枚举类型 (Enums)

枚举类型用于定义一组命名常量。

typescriptCopy Code
enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}

let direction: Direction = Direction.Up;

10. 类型别名 (Type Aliases)

类型别名允许为类型创建自定义名称。

typescriptCopy Code
type Point = { x: number, y: number };
let point: Point = { x: 10, y: 20 };

11. 类型断言 (Type Assertion)

类型断言用于明确告知 TypeScript 某个变量的类型。

typescriptCopy Code
let someValue: any = "Hello, TypeScript!";
let strLength: number = (someValue as string).length;

12. 类型推导 (Type Inference)

TypeScript 会自动推导变量的类型。

typescriptCopy Code
let num = 10;  // TypeScript 会推导 num 为 number 类型

13. any 类型

any 类型表示可以接受任何类型的值。使用 any 类型时,TypeScript 不会对值的类型进行检查。

typescriptCopy Code
let data: any = 42;
data = "string";  // 可以赋值任何类型

14. unknown 类型

unknown 类型类似于 any,但在使用之前必须进行某种类型检查。

typescriptCopy Code
let value: unknown = 30;
if (typeof value === "number") {
  let num: number = value;  // 必须先进行类型检查
}

15. never 类型

never 类型表示那些永远不会有值的类型。通常用于函数总是抛出错误或进入无限循环的场景。

typescriptCopy Code
function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {}
}

16. void 类型

void 类型通常用于没有返回值的函数。

typescriptCopy Code
function logMessage(message: string): void {
  console.log(message);
}

17. this 类型

this 类型用于限制函数或方法中的 this 上下文。

typescriptCopy Code
class Counter {
  count = 0;
  increment(): this {
    this.count++;
    return this;
  }
}

let counter = new Counter();
counter.increment().increment();  // 可以链式调用

总结

TypeScript 提供了丰富的类型系统来增强 JavaScript 的类型安全性和可维护性,包括基本类型、对象、函数、数组、联合类型、交叉类型、字面量类型等。这些类型能够帮助开发者更精确地描述数据结构,从而减少类型错误,提升代码的可读性和可维护性。

标签:TypeScript,string,number,typescriptCopy,Code,let,类型
From: https://www.cnblogs.com/guangzhiruijie/p/18646399

相关文章

  • Cocos Typescript与C#的选择
    Cocos选择TypeScript而非C#作为开发语言的决定,背后有多个可能的原因,主要涉及技术栈的适应性、社区需求、跨平台支持、开发效率等方面。以下是一些可能的原因:1. JavaScript/TypeScript与Web开发的紧密联系Cocos引擎自始至终都非常重视跨平台开发,尤其是对Web平台的支......
  • 自定义类型 --- 结构体
    结构体:结构体的声明:structbook{ charname[20];//书名 charauthor[20];//作者 floatprice;//几个 charid[20];//书号};通过以上操作,我们就完成了一个结构体的声明。其中,struct是结构体的关键字,book为结构体的标签名(可以自定义),nameauthor等为结构体成员。结......
  • 3.数据类型
    3.1字符串1.正常字符串使用'' 或""包裹起来2.注意转义字符\   \'显示’  \n换行\ttab \u4e2d \u###Unicode字符3.多行字符串编写  4.模板字符串5.字符串长度str(变量名).length6.字符串的可变性,不可变Strin......
  • c语言中的自定义类型
    目录1.结构体1.1结构体的定义1.2结构体成员的初始化  1.3结构体的自引用 1.4结构体的内存对齐 2.联合 3.枚举   c语言中的自定义类型有四种,分别是结构,联合,枚举和typedef,今天主要来讲讲他们。1.结构体1.1结构体的定义关键字struct 1.2结构体成员的......
  • 写一个方法获取页面中所有类型的节点数
    在前端开发中,你可以使用JavaScript的DOMAPI来获取页面中所有类型的节点数。下面是一个示例方法,它使用递归函数来遍历DOM树并计算不同类型的节点数量:functiongetNodeTypeCounts(){constcounts={ELEMENT_NODE:0,ATTRIBUTE_NODE:0,TEXT_NODE:0,CDAT......
  • java数据类型-字符型详解
    目录一、基本定义二、表示方式1.字符字面量:2.字符变量声明与赋值:3.常见操作(1)、获取字符的Unicode值(码点):(2)、通过Unicode码点获取字符:(3)、字符的比较操作:(4)、字符参与运算(与其他数据类型结合):(5)、byteshortchar混合运算时,各自会先转换成int再做运算三、字符串相关......
  • 【Java 温故而知新系列】基础知识-03 基本类型对应之包装类
    1、包装类都有哪些?基本类型都有对应的包装类型,这些包装类提供了一种面向对象的方式来处理基本数据类型,允许它们被用于需要对象的场景,如集合框架、泛型等。对应关系:基本类型包装类型booleanBooleanbyteBytecharCharacterfloatFloatintIntegerlongLong......
  • 详解Redis的List类型及相关命令
    目录LPUSHLPUSHXRPUSHRPUSHXLRANGELPOPRPOPLINDEXLINSERTLLEN阻塞版本命令BLPOPBRPOP内部编码应用场景Redis中的List类型,是保证元素有序的,支持队列从两端进行插入删除和获取,并且元素时刻重复的。LPUSH将⼀个或者多个元素从左侧放⼊(头插)到list中。......
  • Vue 3 + TypeScript 从入门到进阶:快速上手指南
    Vue3+TypeScript从入门到进阶:快速上手指南Vue3是Vue.js的最新版本,而TypeScript是一种可以极大提升开发效率和代码质量的强类型语言。当Vue3与TypeScript结合使用时,可以带来更高效的开发体验。本文将重点介绍Vue3与TypeScript的结合使用方式,并提供详细的代码......
  • 【WPF学习】第五十三章 动画类型回顾
    【WPF学习】第五十三章动画类型回顾 创建动画面临的第一个挑战是为动画选择正确的属性。期望的结果(例如,在窗口中移动元素)与需要使用的属性(在这种情况下是Canvas.Left和Canvas.Top属性)之间的关系并不总是很直观。下面是一些指导原则:如果希望使用动画来使元素显示和......