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

TypeScript特有运算符和操作符

文章目录

    • TypeScript 特有运算符
      • 1. `keyof`
      • 2. `typeof`
      • 3. `in`
      • 4. `extends`
      • 5. `is`
      • 6. `as` 和 `<Type>`
      • 7. `never`
      • 8. `readonly`
      • 9. `?`
      • 10. `[]`
      • 11. `|` 和 `&`
      • 12. `!`
      • 13. `??` 和 `?.`
    • 总结

TypeScript 特有运算符

1. keyof

  • 作用:用于获取对象类型的所有键(属性名)组成的联合类型。
  • 语法keyof Type
interface Person {name: string;age: number;
}type PersonKeys = keyof Person; // "name" | "age"

2. typeof

  • 作用:用于获取变量或值的类型。
  • 语法typeof variable
let j: string = "hello";
type JType = typeof j; // string

3. in

  • 作用:用于检查对象是否包含某个属性。
  • 语法key in object
interface User {name: string;age: number;
}let m: keyof User = "name";
let n: User = { name: "风茫", age: 18 };
console.log(m in n); // true

4. extends

  • 作用:用于泛型约束,表示一个类型是否是另一个类型的子类型。
  • 语法T extends U
function add<T extends number>(a: T, b: T): T {return a + b;
}add(1, 2); // 合法
// add("1", "2"); // 报错

5. is

  • 作用:用于类型保护,定义一个返回布尔值的函数,用于类型判断。
  • 语法parameter is Type
function isString(value: any): value is string {return typeof value === "string";
}let o: any = "hello";
if (isString(o)) {console.log(o.toUpperCase()); // 合法
}

6. as<Type>

  • 作用:用于类型断言,告诉编译器某个值的具体类型。
  • 语法value as Type<Type>value
let p: any = "123";
let q = p as number; // 类型断言
// 或者
let r = <number>p; // 类型断言

7. never

  • 作用:表示永远不会发生的值的类型,通常用于函数的返回类型。
  • 语法never
function error(message: string): never {throw new Error(message);
}

8. readonly

  • 作用:用于定义只读属性。
  • 语法readonly property: Type
interface Person {readonly id: number;name: string;
}const person: Person = {id: 1,name: "风茫"
};// person.id = 2; // 报错

9. ?

  • 作用:用于定义可选属性。
  • 语法property?: Type
interface SquareConfig {color?: string;width?: number;
}

10. []

  • 作用:用于定义数组类型。
  • 语法Type[]Array<Type>
let s: number[] = [1, 2, 3];
let t: Array<number> = [1, 2, 3];

11. |&

  • 联合类型 (|):表示一个值可以是多种类型之一。
  • 交叉类型 (&):表示一个值必须同时满足多种类型。
let u: string | number = "hello";
u = 123;interface A {a: string;
}interface B {b: number;
}let v: A & B = {a: "hello",b: 123
};

12. !

  • 非空断言操作符:告诉编译器某个值不会是 nullundefined
  • 语法value!
function printLength(str: string | null) {console.log(str!.length); // 非空断言
}

13. ???.

  • 空值合并操作符 (??):如果左侧操作数为 nullundefined,则返回右侧操作数。
  • 可选链操作符 (?.):如果对象属性存在,则返回该属性值,否则返回 undefined
let w: string | null = null;
let x = w ?? "default"; // "default"interface User {name?: string;
}let y: User = {};
console.log(y?.name); // undefined

总结

TypeScript 中的这些特有运算符主要用于类型定义和类型检查,帮助开发者编写更安全、更可靠的代码。通过合理使用这些运算符,可以提高代码的可读性和可维护性。

  • keyof:获取对象的所有键。
  • typeof:获取变量的类型。
  • in:检查对象是否包含某个属性。
  • extends:泛型约束。
  • is:类型保护。
  • as<Type>:类型断言。
  • never:表示永远不会发生的值。
  • readonly:定义只读属性。
  • ?:定义可选属性。
  • []Array<Type>**:定义数组类型。
  • |&:联合类型和交叉类型。
  • !:非空断言。
  • ???.:空值合并和可选链操作符。

这些运算符使得 TypeScript 成为一种强大的静态类型语言,能够更好地帮助开发者进行类型安全的编程。

http://www.lryc.cn/news/522971.html

相关文章:

  • 介绍下常用的前端框架及时优缺点
  • MATLAB算法实战应用案例精讲-【数模应用】图形变换和复杂图形组合(附python和MATLAB代码实现)
  • SpringMVC 实战指南:打造高效 Web 应用的秘籍
  • doris: Flink导入数据
  • Nginx在Linux中的最小化安装方式
  • CSS布局新视角:BFC(块级格式化上下文)的作用与优势
  • PCL K4PCS算法实现点云粗配准【2025最新版】
  • 02IO篇(D2_深入IO模型)
  • 记录一次微信小程序使用云能力开发的过程
  • Learning Prompt
  • 事务处理系统 (Transaction Processing System, TPS)
  • 【PCIe 总线及设备入门学习专栏 5.3.2 -- PCIe 枚举与 PCIe PHY firmware 的区别与联系】
  • 职场的三个阶段及其应对规划:以前端开发工程师为例
  • 某讯一面,感觉问Redis的难度不是很大
  • RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集
  • excel实用工具
  • 基于.Net Core+Vue的文件加密系统
  • 工业网口相机:如何通过调整网口参数设置,优化图像传输和网络性能,达到最大帧率
  • 深入理解 Windows Server 的核心功能:现代 IT 架构的基石
  • WEB渗透技术研究与安全防御
  • 智能学习平台系统设计与实现(代码+数据库+LW)
  • Java学习,List移动元素
  • Linux-----线程同步(资源竞争和同步锁)
  • 当当网书籍信息爬虫
  • React实现拖拽特效
  • 【竞技宝】LOL:ning直播再次锐评
  • ThreeJS能力演示——界面点选交互能力
  • flutter的web页面
  • 2025.1.17——三、SQLi regexp正则表达式|
  • 虚幻基础2:gameplay框架