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

TypeScript知识点总结和案例使用

TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的超集,提供了静态类型检查和其他一些增强功能。以下是一些 TypeScript 的重要知识点总结:

1. 基本类型

TypeScript 支持多种基本数据类型,包括:

  • number:数字类型。
  • string:字符串类型。
  • boolean:布尔类型。
  • any:任意类型,可以存储任何类型的值。
  • void:表示没有任何类型,通常用于函数没有返回值的情况。
  • null 和 undefined:分别表示空值和未定义值。

2. 类型注解

通过类型注解,可以在变量声明时指定变量的类型:

let age: number = 25;
let name: string = 'Alice';

3. 接口 (Interfaces)

接口用于定义对象的结构,可以指定对象的属性和方法:

interface Person {name: string;age: number;
}const person: Person = {name: 'Bob',age: 30,
};

4. 类 (Classes)

TypeScript 支持面向对象编程,提供了类的概念:

class Animal {constructor(public name: string) {}speak() {console.log(`${this.name} makes a noise.`);}
}const dog = new Animal('Dog');
dog.speak();

5. 泛型 (Generics)

泛型允许在定义函数、类或接口时使用类型参数,以提高代码的灵活性和可重用性:

function identity<T>(arg: T): T {return arg;
}let output = identity<string>('Hello');

6. 联合类型 (Union Types)

可以使用联合类型来表示一个值可以是多种类型之一:

function printId(id: number | string) {console.log(`ID: ${id}`);
}

7. 类型别名 (Type Aliases)

可以使用 type 关键字定义类型别名:

type StringOrNumber = string | number;

8. 类型推断

TypeScript 会根据赋值自动推断类型:

let message = 'Hello, World!'; // message 被推断为 string 类型

9. 枚举 (Enums)

枚举用于定义一组命名常量:

enum Direction {Up,Down,Left,Right,
}

10. 装饰器 (Decorators)

TypeScript 支持装饰器,可以用于类、方法、属性等的元编程:

function log(target: any, propertyKey: string, descriptor: PropertyDescriptor) {console.log(`${propertyKey} was called`);
}class Example {@logmethod() {console.log('Method executed');}
}

11. 模块 (Modules)

TypeScript 支持 ES6 模块,可以使用 import 和 export 来组织代码:

// module.ts
export const PI = 3.14;// main.ts
import { PI } from './module';

12. 类型守卫 (Type Guards)

类型守卫用于在运行时检查变量的类型,以提供更精确的类型推断:

function isString(value: any): value is string {return typeof value === 'string';
}

13. 声明文件 (Declaration Files)

声明文件用于为 JavaScript 库提供类型定义,通常以 .d.ts 结尾。

14. 配置文件 (tsconfig.json)

tsconfig.json 文件用于配置 TypeScript 编译器的选项。

15. 类型系统的灵活性

TypeScript 的类型系统非常灵活,可以通过交叉类型、映射类型等高级特性来构建复杂的类型。

总结

TypeScript 通过引入类型系统和其他现代特性,增强了 JavaScript 的可维护性和开发体验。掌握这些知识点可以帮助开发者更好地使用 TypeScript 开发高质量的应用程序。

相关文章:

TypeScript知识点总结和案例使用

TypeScript 是一种由微软开发的开源编程语言&#xff0c;它是 JavaScript 的超集&#xff0c;提供了静态类型检查和其他一些增强功能。以下是一些 TypeScript 的重要知识点总结&#xff1a; 1. 基本类型 TypeScript 支持多种基本数据类型&#xff0c;包括&#xff1a; numbe…...

解决BUG: Since 17.0, the “attrs“ and “states“ attributes are no longer used.

从Odoo 17.0开始&#xff0c;attrs和states属性不再使用&#xff0c;取而代之的是使用depends和domain属性来控制字段的可见性和其他行为。如果您想要在选择国家之后继续选择州&#xff0c;并且希望在选择了国家之后才显示州字段&#xff0c;您可以使用depends属性来实现这一点…...

单片机GPIO中断+定时器 实现模拟串口接收

单片机GPIO中断定时器 实现模拟串口接收 解决思路代码示例 解决思路 串口波特率9600bps,每个bit约为1000000us/9600104.16us&#xff1b; 定时器第一次定时时间设为52us即半个bit的时间&#xff0c;其目的是偏移半个bit时间&#xff0c;之后的每104us采样并读取1bit数据。使得…...

《深入理解 Spring MVC 工作流程》

一、Spring MVC 架构概述 Spring MVC 是一个基于 Java 的轻量级 Web 应用框架&#xff0c;它遵循了经典的 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将请求、响应和业务逻辑分离&#xff0c;从而构建出灵活可维护的 Web 应用程序。 在 Spring MV…...

HTML简介

知识点一 HTML 什么是HTML&#xff1f; 超文本标记语言(HyperTextMarkup Language&#xff0c;简称HTML) 怎么学HTML&#xff1f; HTML 是一门标记语言&#xff0c;标记语言由一套标记标签组成&#xff0c;学习 HTML&#xff0c;其实就是学习标签 开发工具 编辑器: Pycha…...

Linux系统Centos设置开机默认root用户

目录 一. 教程 二. 部分第三方工具配置也无效 一. 教程 使用 Linux 安装Centos系统的小伙伴大概都知道&#xff0c;我们进入系统后&#xff0c;通常都是自己设置的普通用户身份&#xff0c;而不是 root 超级管理员用户&#xff0c;导致我们在操作文件夹时往往爆出没有权限&am…...

【网络安全 | 甲方建设】双/多因素认证、TOTP原理及实现

未经许可,不得转载。 文章目录 背景双因素、多因素认证双因素认证(2FA)多因素认证(MFA)TOTP实现TOTP生成流程TOTP算法TOTP代码示例(JS)Google Authenticator总结背景 在传统的在线银行系统中,用户通常只需输入用户名和密码就可以访问自己的账户。然而,如果密码不慎泄…...

Nuxt3 动态路由URL不更改的前提下参数更新,NuxtLink不刷新不跳转,生命周期无响应解决方案

Nuxt3 动态路由URL不更改的前提下参数更新&#xff0c;NuxtLink不刷新不跳转&#xff0c;生命周期无响应解决方案 首先说明一点&#xff0c;Nuxt3 的动态路由响应机制是根据 URL 是否更改&#xff0c;参数的更改并不会触发 Router 去更新页面&#xff0c;这在 Vue3 上同样存在…...

2024华为java面经

华为2024年Java招聘面试题目可能会涵盖Java基础知识、核心技术、框架与工具、项目经验以及算法与数据结构等多个方面。以下是考的内容。 一、Java基础知识 Java中有哪些基本数据类型&#xff1f; Java为什么能够跨平台运行&#xff1f; String是基本数据类型吗&#xff1f;能…...

2021 年 9 月青少年软编等考 C 语言三级真题解析

目录 T1. 课程冲突思路分析T2. 余数相同问题思路分析T3. 生成括号思路分析T4. 广义格雷码思路分析T5. 菲波那契数列思路分析T1. 课程冲突 小 A 修了 n n n 门课程,第 i i i 门课程是从第 a i a_i ai​ 天一直上到第 b i b_i bi​ 天。 定义两门课程的冲突程度为:有几天…...

深度解析FastDFS:构建高效分布式文件存储的实战指南(下)

接上篇&#xff1a;《深度解析FastDFS&#xff1a;构建高效分布式文件存储的实战指南&#xff08;上&#xff09;》 传送门: link 文章目录 六、常用命令七、FastDFS配置详解7.1 tracker配置文件7.2 tracker目录及文件结构7.3 storage配置文件7.4 storage服务器的目录结构和文件…...

Python学习29天

二分查找 # 定义函数冒泡排序法从大到小排列 def bbble_sort(list):# i控制排序次数for i in range(len(list) - 1):# j控制每次排序比较次数for j in range(len(list) - 1 - i):if list[j] < list[j 1]:list[j], list[j 1] list[j 1], list[j] # 定义二分查找函数 def…...

Soul App创始人张璐团队携多模态大模型参加GITEX GLOBAL,展现未来社交趋势

作为中东地区规模最大、最成功的计算机通讯及消费性电子产品展,GITEX GLOBAL一直颇受全球关注,于今年迎来了第44届盛会。自诞生以来,GITEX GLOBAL始终聚焦技术驱动的创新,吸引了许多科技巨头、创新企业及投资者的参与。Soul App作为中国较早将AI技术引入社交的企业,今年首次亮相…...

简单工厂模式、方法工厂模式

简单工厂模式&#xff08;Simple Factory Pattern&#xff09; 简单工厂模式的核心思想是通过一个工厂类&#xff0c;根据提供的参数来决定创建哪一个具体的产品类实例。 这个模式通常用于产品种类较少&#xff0c;且不经常变化的场景。 interface Product {void create(); }…...

【面试】前端vue项目架构详细描述

基于您提供的技术栈和要求&#xff0c;以下是前端项目的架构设计描述&#xff1a; 项目结构 • 入口文件&#xff1a; main.js 作为项目的入口文件&#xff0c;负责初始化 Vue 实例&#xff0c;并挂载到 DOM 上。 • 组件目录&#xff1a; components 目录包含项目的所有 Vue 组…...

BERT的中文问答系统32

我们需要在现有的代码基础上增加网络搜索功能&#xff0c;并在大模型无法提供满意答案时调用网络搜索。以下是完整的代码和文件结构说明&#xff0c;我们创建一个完整的项目结构&#xff0c;包括多个文件和目录。这个项目将包含以下部分&#xff1a; 主文件 (main.py)&#xf…...

大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 拦截器实现 Java

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…...

idea maven 重新构建索引

当设置maven仓库为离线模式的时候&#xff0c;会出现一些问题。 比如本地的仓库被各种方式手动更新之后&#xff0c; 举例&#xff1a;我需要一个spring的包&#xff0c;在pmo文件中写好了引入包的代码 但是由于是离线模式没有办法触发自动下载&#xff0c;那么这个时候我可以…...

C#桌面应用制作计算器

C#桌面应用制作简易计算器&#xff0c;可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、/-按键取数字相反数、%按键使数字缩小100倍、按键显示运算结果等...... 页面实现效果 功能实现 布局 计算器主体使用Panel容器&#xff0c;然后将button控件排列放置Pane…...

细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的方法

目录 一、DMA基础知识 1、DMA简介 (1)DMA控制器 (2)DMA流 (3)DMA请求 (4)仲裁器 (5)DMA传输属性 2、源地址和目标地址 3、DMA传输模式 4、传输数据量的大小 5、数据宽度 6、地址指针递增 7、DMA工作模式 8、DMA流的优先级别 9、FIFO或直接模式 10、单次传输或突…...

Python爬虫实战:构建智能职位信息聚合工具JobClaw

1. 项目概述&#xff1a;一个面向开发者的智能职位信息聚合与解析工具最近在帮团队招聘和看机会的朋友聊天&#xff0c;发现一个挺普遍的问题&#xff1a;大家找技术岗位&#xff0c;要么在几个主流招聘App上反复刷&#xff0c;信息分散且格式不一&#xff1b;要么就是盯着几个…...

从零到一:Brigadier如何重塑Mac Boot Camp驱动部署体验

从零到一&#xff1a;Brigadier如何重塑Mac Boot Camp驱动部署体验 【免费下载链接】brigadier Fetch and install Boot Camp ESDs with ease. 项目地址: https://gitcode.com/gh_mirrors/bri/brigadier 在Mac上安装Windows系统曾是一个令人望而生畏的技术挑战&#xff…...

【Oracle数据库指南】第06篇:Oracle DML语句与事务控制——数据操作与ACID特性深度解析

上一篇【第05篇】Oracle子查询与集合操作——嵌套查询与结果合并全解析 下一篇【第07篇】SQL*Plus基础——登录、环境设置与缓冲区操作 摘要 本文全面讲解Oracle DML&#xff08;数据操作语言&#xff09;语句&#xff0c;包括INSERT、UPDATE、DELETE和MERGE的详细用法&#x…...

macOS桌面歌词终极解决方案:LyricsX 2.0完整指南

macOS桌面歌词终极解决方案&#xff1a;LyricsX 2.0完整指南 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 你是否曾经在听音乐时&#xff0c;想要跟着歌词一起唱却发现…...

Lumi Diary:基于OpenClaw Skill的本地AI记忆伴侣设计与实践

1. 项目概述&#xff1a;一个住在你设备里的记忆精灵如果你和我一样&#xff0c;对把生活点滴交给云端总有点不放心&#xff0c;但又渴望有一个能懂你、能帮你把碎片记忆编织成故事的伙伴&#xff0c;那么 Lumi Diary 的出现&#xff0c;可能正是时候。这不是又一个需要你手动打…...

Acrylic Paint风格在Midjourney中失效的5大隐性陷阱(附官方未公开的--s 700+--style raw协同调参公式)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Acrylic Paint风格在Midjourney中的本质定义与失效现象全景图 Acrylic Paint&#xff08;丙烯画&#xff09;风格在Midjourney中并非原生语义标签&#xff0c;而是一种通过视觉特征逆向建模的提示工程产…...

开源工具LMAO:通过浏览器自动化免费调用ChatGPT与Copilot API

1. 项目概述与核心价值如果你和我一样&#xff0c;是个喜欢折腾各种AI工具&#xff0c;但又对官方API的付费门槛、调用限制或者复杂的申请流程感到头疼的开发者&#xff0c;那么今天聊的这个项目&#xff0c;你一定会感兴趣。它叫LLM-API-Open&#xff0c;圈内朋友喜欢叫它LMAO…...

在持续集成环境中集成Taotoken API进行自动化测试的稳定性观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在持续集成环境中集成Taotoken API进行自动化测试的稳定性观察 1. 场景概述&#xff1a;CI/CD中的AI功能自动化测试 在现代软件开…...

通用大模型vs行业垂直AI Agent,制造业落地对比:2026年企业级智能体选型深度解析

进入2026年&#xff0c;人工智能在制造业的落地已从早期的“对话式交互”全面转向“任务式闭环”。通用大模型&#xff08;Foundation Models&#xff09;与行业垂直AI Agent&#xff08;Vertical AI Agents&#xff09;在工业场景中的角色分工日益明确。根据IDC最新发布的《20…...

基于物理信息神经网络与降阶模型的文物数字孪生保护框架

1. 项目概述&#xff1a;当文化遗产保护遇上科学计算与人工智能最近几年&#xff0c;我一直在关注一个交叉领域&#xff1a;如何用前沿的计算科学和人工智能技术&#xff0c;去解决那些看似传统、实则充满挑战的文物保护难题。这次分享的“基于SciML与数字孪生的文化遗产保护框…...