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

ts 定义类型

1. Parameters 类型工具用于提取函数的参数类型,并将其转换为一个元组类型

function add(a: number, b: number): number {
return a + b;
}
type AddParameters = Parameters<typeof add>;

// 定义一个变量,其类型为 AddParameters
const params: AddParameters = [1, 2];

// 使用提取的参数类型调用函数
const result = add(...params); // 3
console.log(result); // 输出: 3

2.枚举类型

enum Color { Red, Green, Blue }
let c: Color = Color.Green;
console.log(c); // 输出: 1

3.Unknown 类型,必须先检查

let value: unknown;
value = 42;
value = "Hello";

if (typeof value === "string") {
console.log(value.toUpperCase()); // 安全地调用字符串方法
}

4.类型别名

type Point = {
x: number;
y: number;
};

let point: Point = { x: 1, y: 2 };

5.泛型

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

let output = identity<string>("myString");
console.log(output); // 输出: "myString"


6.联合类型

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


7.交叉类型

type Person = {
name: string;
};

type Loggable = {
log: () => void;
};

type PersonWithLogging = Person & Loggable;

let person: PersonWithLogging = {
name: "Alice",
log() {
console.log(`Name: ${this.name}`);
},
};


8.类型断言

let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;


9.条件类型

type IsNumber<T> = T extends number ? "Yes" : "No";

type IsNumberResult1 = IsNumber<42>; // "Yes"
type IsNumberResult2 = IsNumber<string>; // "No"

8.Partial 类型,可选
type PartialPerson = Partial<Person>;


10.只读类型  

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

type ReadonlyPerson = Readonly<Person>;
// { readonly name: string; readonly age: number; readonly address: string; }

11.排除 Omit<T, K>

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

type PersonWithoutAge = Omit<Person, 'age'>;
// { name: string; address: string; }


12.选择类型,返回新类型 Pick<T, K>

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

type PersonNameAndAge = Pick<Person, 'name' | 'age'>;
// { name: string; age: number; }

http://www.dtcms.com/a/360450.html

相关文章:

  • Linux学习:简单模拟实现C++中的线程类
  • C++算法学习专题:前缀和
  • 【Linux网络编程】应用层协议-----HTTP协议
  • PostgreSQL表膨胀的危害与解决方案
  • More Effective C++ 条款19:理解临时对象的来源(Understand the Origin of Temporary Objects)
  • centos 7 安装docker、docker-compose教程
  • AI 编程新玩法:用 yunqi-saas-kit 框架制作小游戏,看广告变现轻松赚钱​
  • 国产数据库之TiDB:博采众长
  • Ruoyi-vue-plus-5.x第二篇MyBatis-Plus数据持久层技术:2.2 分页与性能优化
  • [嵌入式embed]Keil5项目提示Missing: Compiler Version 5
  • 工业互联项目总结:UART
  • Backroom:信息代币化 AI 时代数据冗杂的解决方案
  • 漏洞基础与文件包含漏洞原理级分析
  • 使用 Python mlxtend库进行购物篮分析、关联规则
  • 软考中级习题与解答——第一章_数据结构与算法基础(3)
  • 进程状态 —— Linux内核(Kernel)
  • Linux 文件夹权限也会导致基本命令权限缺失问题
  • 【学Python自动化】 5. Python 数据结构学习笔记
  • postman带Token测试接口
  • 打工人日报#20250831
  • LangChain核心抽象:Runnable接口深度解析
  • * 和**有时展开,有时收集。*在对可迭代对象展开 **对字典展开。一般只看收集就够了,在函数定义的时候传入参数用
  • 第二十七天-ADC模数转换实验
  • linux系统学习(12.linux服务)
  • 【星闪】Hi2821 | SPI串行外设接口 + OLED显示屏驱动例程
  • 语音芯片3W输出唯创知音WTN6040FP、WT588F02BP-14S、WT588F04AP-14S
  • [回溯+堆优化]37. 解数独
  • Q1 Top IF 18.7 | 基于泛基因组揭示植物NLR进化
  • 高校心理教育辅导系统的设计与实现|基于SpringBoot高校心理教育辅导系统的设计与实现
  • 网格图--Day02--网格图DFS--面试题 16.19. 水域大小,LCS 03. 主题空间,463. 岛屿的周长