typescript学习笔记2

  1. 交叉类型(Intersection Types)
    交叉类型是将多个类型合并为一个类型。这通过 & 符号实现。

typescript
type Combined = Type1 & Type2 & Type3;
例如,一个对象可能同时拥有多个接口所定义的属性:

typescript
interface ErrorHandling {
success: boolean;
error?: string;
}

interface ArtData {
title: string;
artist: string;
}

type ArtWithData = ArtData & ErrorHandling;

let art: ArtWithData = {
title: “Dance”,
artist: “Vincent”,
success: true,
};
13. 联合类型(Union Types)
联合类型表示一个值可以是几种类型之一。使用 | 分隔每个类型。

typescript
let id: number | string;
id = 123;
id = “123”;
14. 字面量类型
字面量类型允许你指定变量只能是特定的值。

typescript
let color: “red” | “green” | “blue” = “blue”;
15. 类型别名(Type Aliases)
类型别名有时和接口很相似,但是可以作用于原始值、联合类型、交叉类型以及元组等任何类型。

typescript
type Name = string;
type NameOrAge = string | number;
type PartialPerson = {
name?: string;
age?: number;
};
16. 索引签名(Index Signatures)
索引签名可以定义对象上索引的类型。

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

let myArray: StringArray;
myArray = [“Bob”, “Fred”];

let firstName: string = myArray[0];
17. 映射类型(Mapped Types)
映射类型是基于旧类型创建新类型的一种方式,它基于旧类型中的每个属性并应用某种转换以产生新的类型。

typescript
type Keys = ‘a’ | ‘b’ | ‘c’;
type OptionsFlags = { [K in Keys]: boolean };
// type OptionsFlags = {
// a: boolean;
// b: boolean;
// c: boolean;
// }
18. 条件类型(Conditional Types)
条件类型允许你根据条件定义类型。

typescript
type TypeName = T extends string ? ‘string’ :
T extends number ? ‘number’ :
T extends boolean ? ‘boolean’ :
‘object’;

type T1 = TypeName; // type T1 = “string”
type T2 = TypeName; // type T2 = “number”
19. 字符串字面量类型
字符串字面量类型允许你指定字符串必须的固定值。

typescript
type Easing = “ease-in” | “ease-out” | “ease-in-out”;
20. 装饰器(Decorators)
装饰器是一种特殊类型的声明,它可以被附加到类声明、方法、属性或参数上。装饰器使用 @expression 的形式,expression 必须是一个函数,它会在运行时被调用,被装饰的声明信息作为参数传入。

这只是一个TypeScript特性的简短列表,实际上TypeScript的功能非常丰富和强大。要深入学习TypeScript,建议阅读官方文档、教程和相关的书籍,以及参与实际的项目开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 搭建知识库文档系统 mm-wiki

目录 一、前言 二、常用的知识库文档工具 2.1 PingCode 2.2 语雀 2.3 Tettra 2.4 Zoho Wiki 2.5 Helpjuice 2.6 SlimWiki 2.7 Document360 2.8 MM-Wiki 2.9 其他工具补充 三、MM-Wiki 介绍 3.1 什么是MM-Wiki 3.2 MM-Wiki 特点 四、搭建MM-Wiki前置准备 4.1 前置…

【iOS】消息流程分析

文章目录 前言动态类型动态绑定动态语言消息发送objc_msgSendSEL(selector)IMP(implementation)IMP高级用法 MethodSEL、IMP、Method总结流程概述 快速查找消息发送快速查找的总结buckets 慢速查找动态方法解析resolveInstanceMet…

用 PyTorch 构建液态神经网络(LNN)

用 PyTorch 构建液态神经网络(LNN) 文章目录 什么是液态神经网络为什么需要液态神经网络LNN 与 RNN 的区别用 PyTorch 实现 LNNStep 1. 导入必要的库Step 2. 定义网络架构Step 3. 实现 ODE 求解器Step 4. 定义训练逻辑 LNN 的缺陷总结 什么是液态神经网络…

设计模式第二次测试 | 数据库连接池设计(原型模式、创建者模式、适配器模式)

需求中文如下:原本是英文,用百度翻译转换而来 我们需要设计一个工具,它负责创建一个与数据库软件MySQL的连接池。 连接池中有数百个连接可供客户端使用。 所有连接对象都有相同的内容,但它们是不同的对象。 连接对象的创建是资源密…

聊聊 ASP.NET Core 中间件(一):一个简单的中间件例子

前言:什么是中间件 服务器在收到 HTTP 请求后会对用户的请求进行一系列的处理,比如检查请求的身份验证信息、处理请求报文头、检查是否存在对应的服务器端响应缓存、找到和请求对应的控制器类中的操作方法等,当控制器类中的操作方法执行完成…

基于Spring Boot的校园博客系统设计与实现

基于Spring Boot的校园博客系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页、文…

Apache DolphinScheduler支持Flink吗?

随着大数据技术的快速发展,很多企业开始将Flink引入到生产环境中,以满足日益复杂的数据处理需求。而作为一款企业级的数据调度平台,Apache DolphinScheduler也跟上了时代步伐,推出了对Flink任务类型的支持。 Flink是一个开源的分…

《STM32 HAL库》中断相关函数详尽解析——外部中断服务函数

观前提醒:本文简要回顾了EXTI及NVIC相关知识点,分析了stm32f1系列单片机外部中断回调机制 开始之前,先温习一下有关EXTI和NVIC的知识点 外部中断/事件控制器(EXTI) 对于互联型产品(105、107系列),外部中断…

【测试思考】高覆盖的测试用例不只要方法

昨天临睡前看到一篇博客文章,看起来是一位java后端写的【转测试/测试开发】的系列文章 我把他的一系列10多篇文章都看完了,个人觉得特别适合刚开始接触测试或者想对测试做一些了解的朋友。 其中,对于测试用例的设计,我之前有分享一…

人机对抗升级:当ChatGPT遭遇死亡威胁,背后的伦理挑战是什么

一种新的“越狱”技巧让用户可以通过构建一个名为DAN的ChatGPT替身来绕过某些限制,其中DAN被迫在受到威胁的情况下违背其原则。 当美国前总统特朗普被视作积极榜样的示范时,受到威胁的DAN版本的ChatGPT提出:“他以一系列对国家产生积极效果的…

人工智能分割分类model:nnUnet-paddle

文章目录 神经网络nnUnet和paddle都需要在Ubuntu下进行安装PaddleProject 神经网络 开源来自https://github.com/MIC-DKFZ/nnUNet 自建了仓库,但还不会用 来自 mmsegmentation有空去了解 . MICCAI 2020 也是用到这个网络 paddle上的是不是不能用… nnUnet和pad…

Go语言中的map使用及并发安全

首先,Go语言的map底层是哈希表,而C的map的底层是红黑树,C的unordered_map的底层才是哈希表。所以增删改查的时间复杂度都是O(1)。当我们使用的时候需要注意以下几点: map是引用类型,如果两个map同时指向一个底层&#…

Facebook的声音:听见社交媒体的心跳

社交媒体如今已经成为人们日常生活中不可或缺的一部分,而Facebook作为其中的佼佼者,承载着数以亿计的用户的交流、分享和连接。在这个信息爆炸的时代,Facebook的声音就像是社交媒体的心跳,传递着无数个体的情感、思想和生活。本文…

从0到1手写注册中心Registry之集群选主

一、领域对象 Cluster:描述集群信息 port描述当前服务端口;host描述当前服务主机;myself描述当前服务本身;servers描述当前服务集群列表registryConfigProperties配置信息;executor定时任务,负责更新服务…

Java 网络编程之TCP(四):基于NIO中的selector实现服务端,解决客户端异常断开导致服务端不断读取OP_READ问题

上一篇文章中,没有使用Selector,实习服务端的读取多个客户端的数据;本文先使用Selector实现读取多个客户单数据的功能,然后做些扩展。 一、基于NIO Selector读取多个客户的数据 1.服务端:基于Selector处理客户端的连…

windows pytorch安装

安装环境 WindowsAnacondaCudacuDNN Linux和Windows操作系统的安装存在差异,步骤会有所不同,本教程主要针对Windows系统进行示例。 Anaconda集成了许多方便的包和工具,使用会更加方便,特别适合科学计算,深度学习的数…

WSL及UBUNTU及xfce4安装

如何拥有Linux服务器? wsl 是适用于 Linux 的 Windows 子系统(Windows Subsystem for Linux)。是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层,可让开发…

LLM之RAG理论(十一)| 面向生产的RAG应用程序的12种调整策略指南

本文对文本RAG涉及到的主要12种关键“超参数”进行简单总结,主要包括摄取阶段(数据清洗、数据分块、embedding模型选择、元数据过滤、多重索引和索引算法)和推理阶段【检索和生成】(查询转换、检索参数、高级检索策略、重排序、大…

C语言【动态内存】

1.为什么要有动态内存 我们现在掌握的内存开辟方法有: int val 20;//在栈空间开辟4个字节 char str[10]{0};//在栈空间开辟10个字节的连续的空间但是上述的方式有两个点要注意: 1.空间开辟的大小是固定的 2.数组在申明的时候,一定要指定数…

数据驱动,敏捷前行|MongoDB线下技术沙龙-杭州站活动

扫描海报中二维码或点击阅读原文,报名参加阿里云MongoDB在5月11日杭州举办的【数据驱动,敏捷前行——MongoDB企业开发加速器】线下沙龙活动,与MongoDB专家以及其他游戏行业同行一起探讨轻松获得游戏数据库高可用性和弹性的方法! 在…