首页 > 其他分享 >[TypeScript 学习笔记] 1. 日常类型

[TypeScript 学习笔记] 1. 日常类型

时间:2024-06-21 23:11:13浏览次数:24  
标签:TypeScript string age number 笔记 person 日常 类型 name

TypeScript 类型

基础类型

类型 解释
string 用于文本字符串
number 用于数字(整数和浮点数)
boolean 布尔值,可以是 truefalse
null 表示缺少值的空对象指针
undefined 表示未定义的值
void 表示没有任何返回值的函数
never 表示永远不会返回的函数

任意类型

  • any 可以代表任何类型,使用时会放弃类型检查

联合类型

  • | 表示一个值可以是多种类型
const unionType :string|number = 1
const unionType1 :string|number = true // Type 'boolean' is not assignable to type 'string | number'.(2322)

元组

元组(Tuple)是一种特殊类型的数组,它允许我们为数组中的每个元素指定具体的类型,而且这些元素的类型可以不同

let person: [string, number, boolean]; // 定义一个元组类型,包含字符串、数字和布尔值

person = ['Alice', 25, true]; // 正确的赋值方式
// person = [25, 'Alice', true]; // 错误的赋值方式,类型顺序不匹配
// person = ['Alice', '25', true]; // 错误的赋值方式,第二个元素应为数字

console.log(person[0].toUpperCase()); // 访问元组中的元素,这里访问的是字符串类型元素
console.log(person[1] + 1); // 访问数字类型元素

function getPersonInfo(): [string, number] {
    return ['Bob', 30];
}

const [name, age] = getPersonInfo();
console.log(`Name: ${name}, Age: ${age}`);

枚举

枚举(Enum)是一种数据结构,用于定义一组命名的常量。这对于表示某些固定的几个值非常有用,比如表示一周中的几天或者 HTTP 状态码等

enum Days {
  Sunday,
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday,
  Saturday
}

console.log(Days[0])    // "Sunday" 
console.log(Days['Sunday']) // 0

Object 对象类型

对象类型可以通过接口(Interfaces)或者类型别名(Type Aliases)来定义

  • object 可以是任何非原始类型,即除了基本类型以外的所有类型

  • {} 表示一个普通的对象类型,没有特定的形状

  • interface 来描述具体特定属性的对象结构

接口还可以实现继承和合并.实现类的结构或需要扩展时,接口是更好的选择

// interface
interface Person {
  name: string;
  age: number;
  address?: string; // 可选属性,表示该属性可以不存在
}

function printPersonInfo(person: Person) {
  console.log(`Name: ${person.name}, Age: ${person.age}`);
}

const person1: Person = { name: "Alice", age: 30 };
printPersonInfo(person1);

  • type 来描述具体特定属性的对象结构

类型别名不能被 extends 或 implements 关键字使用

// type
type Person = {
  name: string;
  age: number;
  address?: string;
};

function introduce(person: Person) {
  console.log(`Hi, my name is ${person.name} and I am ${person.age} years old.`);
}

const person2: Person = { name: "Bob", age: 25, address: "123 Elm Street" };
introduce(person2);

标签:TypeScript,string,age,number,笔记,person,日常,类型,name
From: https://www.cnblogs.com/jessqiu/p/18261635

相关文章

  • python笔记
    pythonflatten()flatten()方法用于将多维数组转换为一维数组:#创建一个二维数组array_2d=np.array([[1,2,3],[4,5,6]])#使用flatten()方法将其展平为一维数组array_1d=array_2d.flatten()print(array_1d)输出结果是:[1,2,3,4,5,6]是X.flatten()[:......
  • linux笔记
    linux命令行重定向:标准输出>.>>ls>file_list.txt:在此示例中,ls执行命令并将结果写入名为的文件中file_list.txt。由于的输出ls被重定向到文件,因此显示屏上不会出现任何结果.ls>>file_list.txt:附加结果时,新结果将添加到文件末尾,从而使每次重复命令时文件......
  • 进程(一万字学习笔记)
    ------------------------本文为学习进程记录的学习笔记,如有问题欢迎指正--------------------------目录1.定义2.进程的种类2.进程的内存布局3.进程控制块(PCB)4.进程源语fork()写时复制exec()execl函数wait() #进程回收waitpid()函数5.僵尸进程僵尸进程产生......
  • opencv入门-小白的学习笔记c++(1)
    注:以下是根据链接https://blog.csdn.net/Cream_Cicilian/article/details/105427752的小白学习过程。1加载、修改、保存图像1.1加载图像1.1.1加载图像cv::imread用于从文件中读取图像数据并将其存储到一个cv::Mat对象中,其中第一个参数表示图像文件名称第二个参数,表......
  • 硬件开发笔记(二十一):外部搜索不到的元器件封装可尝试使用AD21软件的“ManufacturerPart
    前言  这是一个AD的一个强大的新功能,能招到元器件的原理图、3D模型还有价格厂家,但是不一定都有,有了也不一定有其3D模型。ManufacturerPartSearch在设计工具中选择即用型元件  直接搜索,搜索到需要使用的元器件。在AltiumDesigner中,直接选中设备元件。无需使用第......
  • nodejs从基础到实战学习笔记-模块化、包
    二、模块化2.1什么是模块化模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。2.1.1把代码进行模块化拆分的好处提高了代码的复用性提高了代码的可维护性可以实现按需加载•如果程序设计的规......
  • 最详细的JS学习笔记(连载)第二章、数组方法(删除)
    数组删除(1)数组.pop() 移除最后一个元素,并返回移除该元素值  参数:无        返回值:被删除的那个元素           原有的数组改变letary=[10,20,30]varres=ary.pop();console.log(res,ary)   //res=>30  ary=>[10,20]基于原......
  • 近期面试笔记和个人规划
    在上海的第八年,工作的第四年,今年我二十五岁,和理想的自己还相差甚远.路漫漫其修远兮,溯洄从之,道阻且长,溯游从之,宛在水中央.Part1.面试题1.主流关系型数据库有哪些?2.SQL的性能怎么优化?3.表JOIN时候,底层有哪几种连接类型?4.项目中对Hadoop和Hive了解?对离线数仓和数据集成ETL的了......
  • UE5笔记-实现Lumen实时渲染GI下的的类UCanvasRenderTarget实现多场景/自定义分辨率/方
    默认的SceneCapture不能用于实时Lumen光照模式下为了实现实时渲染GI下的的类似于UCanvasRenderTarget2D类.可以参考GameViewport类的源码尝试使用UE的渲染逻辑和数据多渲染一份视口副本到直接的FSceneView上,封装一份UCaptureRenderTarget出来从而实现一些例如自定义分辨率的......
  • [Effective Modern C++] 条款18笔记
    条款18中的完整代码:点击查看代码#include<iostream>#include<memory>#include<string>//假设基础的Investment类和Stock类classInvestment{public:virtual~Investment()=default;virtualvoiddisplay()const=0;};//其它类类似,略classSto......