白白的白豆腐

  • 首页
  • 文章归档
    • WordPress
    • 玩转群晖
    • 解决方案
  • 编程相关
    • Django
    • Python
    • Redis
    • React
  • 游戏攻略
    • 骑马与砍杀
  • 外语小筑
    • English
  • 网络资源
  • 关于
该发生的总会发生,不管你是否为此焦虑
向前走,向前看,生活就这么简单
  1. 首页
  2. 编程相关
  3. Typescript
  4. 正文

TypeScript 学习笔记

2024年 12月 2日 4552点热度 1人点赞 0条评论

1. 基本类型

1.1 数字类型 (number)

在 TypeScript 中,number 类型代表数字值,支持整数和浮点数。

let age: number = 25;
let price: number = 99.99;

1.2 字符串类型 (string)

string 类型用于表示文本数据,所有的字符串必须用单引号 (') 或双引号 (") 括起来。

let name: string = "白白的白豆腐";
let message: string = `你好, ${name}!`;

1.3 布尔类型 (boolean)

boolean 类型用于表示逻辑值,只有两个可能的值:true 或 false。

let isActive: boolean = true;
let isCompleted: boolean = false;

1.4 数组类型 (array)

数组是存储多个值的容器,可以定义数组的类型。

let numbers: number[] = [1, 2, 3];
let names: string[] = ["Tom", "Jerry"];

2. 函数类型

2.1 基本函数定义

TypeScript 中函数的类型定义可以通过 function 关键字来指定参数类型和返回值类型。

function greet(name: string): string {
  return `Hello, ${name}`;
}

2.2 可选参数

在函数定义中,某些参数是可选的,可以通过在参数名后加上 ? 来表示。

function greet(name: string, age?: number): string {
  if (age) {
    return `Hello, ${name}. You are ${age} years old.`;
  }
  return `Hello, ${name}`;
}

2.3 默认参数值

可以为函数参数设置默认值,当没有传入参数时使用默认值。

function greet(name: string, age: number = 18): string {
  return `Hello, ${name}. You are ${age} years old.`;
}

3. 对象类型

3.1 对象类型定义

对象类型的定义可以通过接口(interface)或者类型别名(type)来表示。

interface Person {
  name: string;
  age: number;
}

let person: Person = { name: "Tom", age: 30 };

3.2 可选属性

接口中的某些属性可以是可选的,通过在属性名后添加 ? 来表示。

interface Person {
  name: string;
  age?: number;
}

let person: Person = { name: "Tom" }; // age 是可选的

3.3 任意属性

如果对象的属性是动态的,或者不确定的,可以使用 index signature 来表示。

interface Dictionary {
  [key: string]: string;
}

let dict: Dictionary = { name: "Tom", city: "Shanghai" };

4. 类型推断与类型注解

4.1 类型推断

TypeScript 会根据变量的赋值自动推断出类型。例如,当你给变量赋值时,TypeScript 会根据值的类型推断出该变量的类型。

let age = 25; // TypeScript 自动推断 age 的类型为 number

4.2 类型注解

类型注解是显式地指定变量的类型。即使 TypeScript 能自动推断类型,仍然可以使用类型注解来显式指定变量的类型。

let age: number = 25;

5. 联合类型与交叉类型

5.1 联合类型(Union Type)

联合类型允许一个变量可以是多种类型中的一种,用竖线 (|) 来分隔。

let value: string | number;
value = "hello";
value = 123;

5.2 交叉类型(Intersection Type)

交叉类型表示一个变量可以同时具有多个类型,使用 & 连接多个类型。

interface A {
  name: string;
}

interface B {
  age: number;
}

let person: A & B = { name: "Tom", age: 30 };

6. 类与对象

6.1 类定义

TypeScript 中的类和 JavaScript 类类似,可以通过 class 关键字来定义。

class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet(): string {
    return `Hello, ${this.name}`;
  }
}

let person = new Person("Tom", 30);
console.log(person.greet());

6.2 继承与多态

TypeScript 支持类的继承,可以使用 extends 关键字来继承父类。

class Employee extends Person {
  job: string;

  constructor(name: string, age: number, job: string) {
    super(name, age);
    this.job = job;
  }

  greet(): string {
    return `Hello, ${this.name}. Your job is ${this.job}.`;
  }
}

let employee = new Employee("Tom", 30, "Engineer");
console.log(employee.greet());

7. 泛型(Generics)

7.1 泛型函数

泛型使得函数可以接受多种类型的参数,并保持类型一致性。

function identity<T>(arg: T): T {
  return arg;
}

let result = identity("Hello"); // result 的类型为 string

7.2 泛型约束

泛型可以添加约束,确保传入的类型满足一定条件。

function getLength<T extends { length: number }>(arg: T): number {
  return arg.length;
}

console.log(getLength("Hello")); // 输出 5

8. 高级类型

8.1 映射类型(Mapped Types)

映射类型可以根据已有类型创建新类型,通过修改类型的属性来实现。

type ReadOnly<T> = {
  readonly [P in keyof T]: T[P];
};

interface Person {
  name: string;
  age: number;
}

const person: ReadOnly<Person> = { name: "Tom", age: 30 };
// person.name = "Jerry"; // 错误,属性为只读

8.2 条件类型(Conditional Types)

条件类型允许根据类型的不同选择不同的类型。

type IsString<T> = T extends string ? "yes" : "no";

type Test1 = IsString<string>; // "yes"
type Test2 = IsString<number>; // "no"
本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: Typescript
最后更新:2024年 12月 2日

白白的白豆腐

这个人很懒,什么都没留下

点赞

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

内容 隐藏
1. 基本类型
1.1 数字类型 (number)
1.2 字符串类型 (string)
1.3 布尔类型 (boolean)
1.4 数组类型 (array)
2. 函数类型
2.1 基本函数定义
2.2 可选参数
2.3 默认参数值
3. 对象类型
3.1 对象类型定义
3.2 可选属性
3.3 任意属性
4. 类型推断与类型注解
4.1 类型推断
4.2 类型注解
5. 联合类型与交叉类型
5.1 联合类型(Union Type)
5.2 交叉类型(Intersection Type)
6. 类与对象
6.1 类定义
6.2 继承与多态
7. 泛型(Generics)
7.1 泛型函数
7.2 泛型约束
8. 高级类型
8.1 映射类型(Mapped Types)
8.2 条件类型(Conditional Types)

COPYRIGHT © 2024 白白的白豆腐. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

辽ICP备2022008846号