当前位置: 首页 > article >正文

TypeScript-类型注解知识点详解

TypeScript-类型注解知识点详解

类型注解是 TypeScript 的核心特性之一,它允许开发者为变量、函数参数和返回值等指定类型。以下是类型注解的一些关键知识点:

1. 基本类型注解

在 TypeScript 中,你可以为变量指定基本类型:

let isDone: boolean = false;
let decimal: number = 6;
let name: string = "Kimi";
let list: number[] = [1, 2, 3]; // 数组类型注解
let x: [string, number] = ["Kimi", 10]; // 元组类型注解

2. 复杂类型注解

除了基本类型,TypeScript 还支持更复杂的类型注解,如联合类型、交叉类型、类型别名和接口:

// 联合类型
let id: number | string = "Kimi";

// 交叉类型
let data: { id: number } & { name: string } = { id: 1, name: "Kimi" };

// 类型别名
type PersonType = {
  name: string;
  age: number;
};

let bob: PersonType = {
  name: "Bob",
  age: 25,
};

// 接口
interface PersonInterface {
  name: string;
  age: number;
}

let tom: PersonInterface = {
  name: "Tom",
  age: 30,
};

3. 可选属性和只读属性

你可以使用 ? 来标记一个属性为可选的,使用 readonly 来标记一个属性为只读的:

interface Person {
  readonly id: number;
  name?: string;
}

4. 类型断言

类型断言用于告诉编译器你比它更了解一个变量的类型:

let value: any = "Kimi";
let strLength: number = (<string>value).length;

5. 类型守卫

类型守卫是一种在运行时检查变量类型的方式,它可以用来缩小变量可能的类型范围:

function printValue(value: string | number) {
  if (typeof value === "string") {
    console.log(value.toUpperCase());
  } else {
    console.log(value.toFixed(2));
  }
}

6. 索引签名

索引签名允许你为对象的属性提供一个类型,这个类型是按照索引签名来确定的:

interface StringArray {
  [index: number]: string;
}

let myArray: StringArray;
myArray = ["Hello", "World", "TypeScript"];

7. 函数类型注解

函数的类型注解包括参数类型和返回值类型:

function greet(name: string): string {
  return "Hello, " + name;
}

8. 重载

函数重载允许你为同一个函数名定义多个函数类型:

function greet(person: Person): string;
function greet(person: string): string;
function greet(person: any): string {
  if (typeof person === "string") {
    return "Hello, " + person;
  } else {
    return "Hello, " + person.name;
  }
}

9. 类型推断

TypeScript 编译器会根据变量的初始化值来推断其类型,如果未指定类型注解:

let name = "Kimi"; // 类型推断为 string

10. 非空断言操作符

非空断言操作符 ! 用于告诉 TypeScript 编译器,你确信一个变量不会是 nullundefined

let value: string | null = null;
value!.toUpperCase(); // 告诉编译器 value 不会是 null 或 undefined

类型注解是 TypeScript 的基础,它提供了一种方式来为变量和函数参数指定预期的类型,从而使得代码更加健壮和易于维护。通过使用类型注解,你可以在编译时捕捉到潜在的错误,而不是在运行时。


http://www.kler.cn/a/369553.html

相关文章:

  • origin如何在已经画好的图上修改数据且不改变原图像的画风和格式
  • 蓝桥备赛指南(5)
  • 单机伪分布Hadoop详细配置
  • 【腾讯云】腾讯云docker搭建单机hadoop
  • 供应链系统设计-供应链中台系统设计(十)- 清结算中心概念片篇
  • 【C语言练习题】整数和实数在计算机中的二进制表示
  • 驾校管理系统|基于java和小程序的驾校管理系统设计与实现(源码+数据库+文档)
  • ubuntu服务器离线安装pytorch(cpu版本)
  • Go Web开发登录功能实现
  • 【C++】哈希冲突的解决办法:闭散列 与 开散列
  • 学 Python 还是学 Java?——来自程序员的世纪困惑!
  • 求解亥姆霍兹方程
  • llama.cpp基础知识与原理导读
  • CSP/信奥赛C++刷题训练:经典二分例题(2):洛谷P1678:烦恼的高考志愿
  • 抖音矩阵系统开发的技术框架解析,支持OEM
  • CMakeLists.txt 编写规则
  • 【MySQL】实战篇—项目需求分析:如何进行需求分析与数据库设计
  • Linux下MySQL8.x的编译安装与使用
  • SLAM:未来智能科技的核心——探索多传感器融合的无限可
  • Django设计ORM模型步骤
  • 热题100(hash)
  • day01-ElasticStack+Kibana
  • sa-token 所有的异常都是未登录异常的问题
  • 创建软Raid MDadm LVM 扩容根目录空间
  • Java多线程_1
  • VUE使用vue-tree-color组件实现组织架构图,并可以动态更新数据