typescript学习笔记3

  1. 类型推断(Type Inference)
    TypeScript 编译器会在编译过程中进行类型推断。这意味着在很多情况下,你不需要明确地为变量或表达式指定类型,TypeScript 会根据上下文自动推断出最合适的类型。

typescript
let x = 10; // TypeScript 会自动推断 x 的类型为 number
22. 严格模式(Strict Mode)
在 TypeScript 中,你可以通过 tsconfig.json 配置文件启用严格模式。严格模式会启用更多的类型检查规则,帮助你在开发过程中捕获更多的潜在错误。

json
{
“compilerOptions”: {
“strict”: true
}
}
23. 泛型(Generics)
泛型允许你创建可重用的组件,这些组件可以适应多种类型的数据。泛型在创建可重用的接口、函数和类时非常有用。

typescript
function identity(arg: T): T {
return arg;
}

let output = identity(“myString”); // 输出 “myString”
24. 枚举(Enumerations)
枚举是一种特殊的数据类型,允许你为值定义一组有名字的常量。使用枚举可以使代码更清晰、更易于维护。

typescript
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
25. 类型保护(Type Guards)
类型保护是一种特殊的表达式,它允许你缩小一个变量的类型范围。类型保护通常与联合类型一起使用,以在运行时确定一个变量的确切类型。

typescript
function isFish(animal: Fish | Bird): animal is Fish {
return (animal as Fish).swim !== undefined;
}
26. 混入(Mixins)
混入是一种在多个类之间共享行为的方式。在 TypeScript 中,你可以使用混入来实现类似多重继承的功能。

  1. 声明合并(Declaration Merging)
    TypeScript 允许你将两个或多个具有相同名称的声明合并成一个单独的声明。这在你需要扩展模块、接口、类或其他类型的定义时非常有用。

  2. 符号(Symbols)
    TypeScript 支持 ES6 中的 Symbol 类型,这是一种原始数据类型,用于创建唯一的标识符。

  3. 模块解析(Module Resolution)
    TypeScript 支持多种模块解析策略,如 Node.js 的 CommonJS、AMD 和 ES6 模块。你可以通过 tsconfig.json 配置文件中的 module 选项来指定要使用的模块系统。

  4. 性能优化
    避免使用 any 类型:使用 any 类型会破坏 TypeScript 的类型检查优势,增加代码出错的可能性。尽可能使用明确的类型。
    合理使用接口和类型别名:通过接口和类型别名可以提高代码的可读性和可维护性,减少重复代码。
    使用 ES6 模块系统:ES6 模块系统可以帮助你更好地组织代码,提高代码的模块化程度。
    以上只是 TypeScript 的部分高级特性和学习笔记。要深入了解 TypeScript 的所有功能,建议阅读官方文档和相关的教程、书籍,并积极参与实际的项目开发

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

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

相关文章

Shell脚本知识点汇总表格总结

现在后端开发程序员,基本上都需要具备基本的运维能力,所以shell脚本编程也是非常重要的。所以需要掌握shell脚本的知识,并具备编写shell脚本的能力,我想把最近这几年在广州图书馆看的关于shell脚本的知识做个总结汇总,…

net lambda 、 匿名函数 以及集合(实现IEnumerable的 如数组 、list等)

匿名函数:》》》 Action a1 delegate(int i) { Console.WriteLine(i); }; Lambda:>>> Aciont a1 (int i) > { Console.WriteLine(i); }; 可以简写 (编译器会自动根据委托类型 推断) Action a1 (i)> {…

笔记本无线网络共享给有线使用

1.鼠标右击wifi图标选择打开网络和Internet设置 2.选择WLAN项,点击进入更改适配器选项 3.进入到以下界面,右击以太网选择启动(不确定的话可以在设备管理器查看网卡) 4.右击WLAN选项,点击属性 5.点击共享&#xff0…

搭建vue3组件库(一): Monorepo架构搭建

文章目录 1. 以 pnpm 构建 monorepo1.1 全局安装 pnpm1.2 配置 pnpm 的 monorepo 工作区1.3 仓库项目内的包相互调用1.4 TypeScript 初始化配置文件 2. 通用配置文件2.1 添加 .editorconfig 编辑器格式配置文件2.2 添加 .gitignore git 忽略文件2.3 添加 .npmrc npm配置文件2.4…

esp32s3使用psram后音频播报不了的问题解决记录

idf.py menuconfig开启psram后会报错 提示需要打补丁: 根据提示切换到IDF_PATH目录,然后执行git apply %ADF_PATH%/ida_patches/idf5.0_freertos.patch打补丁。 再次编译提示如下错误: assert failed: spi_flash_disable_interrupts_cach…

【Qt QML】Pane组件

Pane(窗格)提供与应用程序样式和主题匹配的背景色。窗格不提供自己的布局,但需要您定位其内容,例如通过创建RowLayout或ColumnLayout。 声明为窗格的子项的项自动成为窗格的contentItem的父项。动态创建的项需要显式地添加到conte…

VSCode 配置 CMake

VSCode 配置 C/C 环境的详细过程可参考:VSCode 配置 C/C 环境 1 配置C/C编译环境 方案一 如果是在Windows,需要安装 MingW,可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。 注意安装路径不要出现中文。 打开 windows…

06 - 步骤 add constants

简介 Add Constants 步骤是用于在数据流中添加常量字段的步骤。它允许用户在数据流中插入一个或多个常量字段,并为这些字段指定固定的数值、字符串或其他类型的常量值。 使用 场景 我需要在数据清后,这个JSON 字符串有一个固定的行流数据。 1、拖拽…

数字旅游引领未来智慧之旅:科技应用深度重塑旅游生态,智慧服务全面升级打造极致高品质旅游体验

随着信息技术的飞速发展,数字旅游作为旅游业与科技融合的新兴业态,正以其独特的魅力和优势,引领着旅游业迈向智慧之旅的新时代。数字旅游不仅通过科技应用重塑了旅游生态,更通过智慧服务为游客带来了高品质的旅游体验。本文将深入…

grpc笔记

教程地址 【狂神说】gRPC最新超详细版教程通俗易懂 | Go语言全栈教程_哔哩哔哩_bilibili rpc 定义:Remote Procedure Call——远程过程调用,通俗的含义是:远程定义好方法名、参数和返回值,RPC可以像调用本地方法那样调用远端方…

中兴F7607P自启动程序,关闭JAVA插件

中兴F7607P自启动程序,关闭JAVA插件 本文目的:关闭光猫内自动运行的JAVA插件,并实现开机自动调用用户的程序启动 原文地址 移动定制版F7607P不带LXC容器,取而代之的是JAVA虚拟机,内置多个插件,包括名为C…

Python和Julia河流湖泊沿海水域特征数值算法模型

🎯要点 一维水流场景计算和绘图: 🎯恒定透射率水头和流量计算:🖊两条完全穿透畜水层理想河流之间 | 🖊无承压畜水层两侧及两条完全穿透畜水层的补给 | 🖊分水岭或渗透性非常低的岩体的不渗透边…

Flask简介

Flask简介 安装概述使用PyCharm创建一个Flask程序 Flask程序的基本结构初始化路由和视图函数启动服务器请求-响应循环 安装 概述 Flask算是小型框架,小到可以称为“微框架”。Flask 非常小,因此你一旦能够熟练使用它,很可能就能读懂它所有的…

《MySQL对库的基本操作》

文章目录 一、查看数据库列表查看数据库中的所有表想知道当前处于哪个数据库里 二、创建一个数据库三、删除一个数据库知道两个集1.字符集2.校验集修改数据库的字符集和编码集 不同的校验码对数据库的影响四、数据库的备份与恢复注意事项:备份数据库中的表 总结 一、…

现代神经网络总结(AlexNet VGG GoogleNet ResNet的区别与改进)

VGG NIN GoogleNet 1.VGG,NIN,GoogleNet的块结构图对比(注意:无AlexNet) 这些块带来的区别与细节 AlexNet未使用块,主要对各个层进行了解: 卷积:捕捉特征 relu:增强非线性 池化层:减少计算量 norm:规范数据分布 全连接层:分类VGG块的改善(对比AlexNe…

开源博客项目Blog .NET Core源码学习(18:App.Hosting项目结构分析-6)

本文学习并分析App.Hosting项目中后台管理页面的_AminLayout.cshtml模版页面和登录页面。 _AminLayout.cshtml模版页面 后台管理页面中的大部分页面都使用_AminLayout.cshtml作为模板页面,如下图所示,后台页面的视图内容放置在表单中,使用la…

wps用js宏给文档增加用户名密码验证

偶然看见别人一个给office文档增加验证的vba教程,觉得很有意思,就打开wps验证了一下 wps在windows版本支持vba和js,js默认,vba需要自己下载相关插件折腾,linux版本wps个人版默认没有支持2次开发的高级功能&#xff0c…

unity想让方法带一个默认参数怎么写

在C#中,包括Unity使用的C#版本,你可以为方法参数提供默认值。这允许你在调用方法时省略某些参数,并使用这些参数的默认值。以下是如何为一个方法参数设置默认值的示例: using UnityEngine; public class MyClass : MonoBehaviou…

【C++航海王:追寻罗杰的编程之路】C++11(四)

目录 1 -> 相关文章 【C航海王:追寻罗杰的编程之路】C11(一) 【C航海王:追寻罗杰的编程之路】C11(二) 【C航海王:追寻罗杰的编程之路】C11(三) 2 -> lambda表达式 2.1 -> C98中的一个例子 2.2 -> lambda表达式 2.3 ->…

Python 与 TensorFlow2 生成式 AI(三)

原文:zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者:飞龙 协议:CC BY-NC-SA 4.0 第七章:使用 GAN 进行风格转移 神经网络在涉及分析和语言技能的各种任务中正在取得进步。创造力是人类一直占有优势的领域&…