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

TypeScript 基础学习

TypeScript是具有类型语法的JavaScript。

是JavaScript超集,可以编译为纯JavaScript,构建安全可靠的代码,进行类似 babel 的转换。

一种基于JavaScript的强类型、静态的编程语言,提供了类型检测的工具。

特性:

  • 易读

  • 开源

  • 提供代码的错误检测。

// @ts-check adding this to a js file shows errors in your editor
function test(arr){if(a.length > 10)
cannot find name 'a'. // the param is arr, not a !return arr.trim(0,10)return arr
}
  • 和JavaScript兼容性好,兼容 es6等。

// TypeScript code
type Result = 'a' | 'b'function test(result: Result) {if (result === 'a'){console.log('a')} else {console.log('b')}
}// 去掉 typescript 类型声明 types are removed
// 变成 JavaScript codefunction test(result) {if (result === 'a'){console.log('a')} else {console.log('b')}
}
  • 提供可靠类型,规范函数入参和出参。

// 接口 interface
interface A {id: numbername: stringsort: 1 
}function test(user: A) {console.log(user.id)
}// 类型声明 type
type R = 'a' | 'b'function test(r: R) {if (r === 'a') {console.log('a')} else {console.log('b')}
}

为什么需要TypeScript,除了上面特性,还可以从编程语言来说:

按数据类型分

在确定变量类型的时机来区分:

1、typescript 静态类型语言: 在编译代码时能确定变量类型

  • 代码可读性
  • 基于类型编程,关注系统如何构建,模块之间的关联
  • 编写清晰的代码
  • 适合大型,复杂的项目
  • 可靠,易重构。

2、JavaScript 动态类型语言: 在运行代码时能确定变量类型

  • 编程自由
  • 写时非常爽,重构火葬场
  • 重构时工作效率
  • 重构时成本增加
  • 不适合大型项目代码

Typescript 缺点

  • 引入太多的新概念,类型泛型、枚举等,渐进式,学会语法就能用。
  • 不适合小项目,会增加开发成本,需要在项目中声明很多的类型等。

相关文章:

TypeScript 基础学习

TypeScript是具有类型语法的JavaScript。 是JavaScript超集,可以编译为纯JavaScript,构建安全可靠的代码,进行类似 babel 的转换。 一种基于JavaScript的强类型、静态的编程语言,提供了类型检测的工具。 特性: 易读…...

《CSS3》田字网格背景(外实线内虚线)的实现

一、前言 记录一些有趣的CSS实现方式,总所周知,当一段效果可以通过CSS实现的时候,绝不使用Javascript来实现,因此记录一些有意思的CSS效果,一来是方便自己学习,另一来是方便以后在需要使用到的时候能快速找…...

图书管理系统(ArrayList和LinkedList)--versions3.0

目录 一、项目要求: 二、项目环境 三、项目使用的知识点 四、项目代码 五、项目运行结果 六、项目难点分析 图书管理系统--versions1.0: 图书管理系统--versions1.0-CSDN博客文章浏览阅读981次,点赞29次,收藏17次。本文使用…...

游戏开发丨基于Pygame的AI版贪吃蛇小游戏

文章目录 写在前面需求分析程序设计程序分析运行结果系列文章写在后面 写在前面 本期内容 基于pygame的AI版贪吃蛇小游戏 所需环境 pythonpycharm或anacondapygame 下载地址 https://download.csdn.net/download/m0_68111267/88789665 需求分析 本游戏使用Pygame模块开…...

qt-C++笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别

qt-C笔记之QStringList、QList、QString、QChar、QList区别 —— 杭州 2024-01-30 凌晨0:27 参考博文&#xff1a;qt-C笔记之QStringList code review! 文章目录 qt-C笔记之QStringList、QList<QString>、QString、QChar、QList<QChar>区别1.Qt的字符容器类1.QSt…...

python爬虫学习之解析_BeautifulSoup

目录 一、bs4的基本使用 &#xff08;1&#xff09;导入 &#xff08;2&#xff09;创建对象 二、节点定位 1、根据标签名查找节点 2、基本函数使用 &#xff08;1&#xff09;find &#xff08;2&#xff09;find_all &#xff08;3&#xff09;select 三、节点信息 1、获取节…...

2024美赛数学建模赛题解读常用模型算法

回归拟合预测 拟合预测是建立一个模型去逼近实际数据序列的过程&#xff0c;适用于发展性的体系。建立模型时&#xff0c;通常都要指定一个有明确意义的时间原点和时间单位。而且&#xff0c;当t趋向于无穷大时&#xff0c;模型应当仍然有意义。将拟合预测单独作为一类体系研究…...

NoSQL 数据库管理系统和模型的比较

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 NoSQL 数据库管理系统和模型的比较 介绍 当大多数人想到数据库时&#xff0c;他们通常会想到传统的关系数据库…...

数据库(SQL)

目录 1 触发器 1.1 触发器简介 1.2 触发器的创建 语法 说明 1.3 示例 2 存储过程 2.1 什么是存储过程&#xff08;函数&#xff09; 2.1.1 存储过程和存储函数的区别 2.2 优势 2.3 应用场景 2.4 存储过程的创建和使用 说明 各参数类型所实现的存储过程 无参数无返…...

如何用Docker+jenkins 运行 python 自动化?

1.在 Linux 服务器安装 docker 2.创建 jenkins 容器 3.根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 4.运行新的 python 容器&#xff0c;执行 jenkins 从仓库中拉下来的自动化项目 5.执行完成之后删除容器 前言 环境准备 Linux 服务器一台(我的是 CentOS7)…...

uniapp瀑布流实现

1. 图片瀑布流&#xff1a; 不依赖任何插件&#xff0c;复制即可见效&#xff1a; <template><view class"page"><view class"left" ref"left"><image class"image" v-for"(item,i) in leftList" :k…...

鸿蒙:@Link装饰器-父子双向同步

子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。从API version 9开始&#xff0c;该装饰器支持在ArkTS卡片中使用。 需要注意&#xff1a;Link装饰的变量与其父组件中的数据源共享相同的值。Link装饰器不能在Entry装饰的自定义组件中使用。 一、装饰器使…...

Leetcode--27

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面…...

使用Eclipse搞Android项目报错

相信现在都没什么人还会用Eclipse来开发的了。 不过安装完后&#xff0c;打开Eclipse会提示我的Jdk版本不符合 --------------------------- Incompatible JVM --------------------------- Version 1.8.0_391 of the JVM is not suitable for this product. Version: 17 or g…...

import sys是什么

import sys语句 允许你使用sys模块提供的各种功能&#xff0c;从而更好地与Python解释器和操作系统底层进行交互。通过熟练掌握sys模块的使用&#xff0c;可以大大提高Python开发的效率和灵活性。 sys模块 是Python的内置模块之一&#xff0c;用于与Python解释器和系统环境交…...

Python爬虫:XPath基本语法

XPath&#xff08;XML Path Language&#xff09;是一种用于在XML文档中定位元素的语言。它使用路径表达式来选择节点或节点集&#xff0c;类似于文件系统中的路径表达式。 不啰嗦&#xff0c;讲究使用&#xff0c;直接上案例。 导入 pip3 install lxmlfrom lxml import etr…...

UML/SysML建模工具更新情况(截至2024年1月)(1)UModel 2024

最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;Umple 1.33.0 更新时间&#xff1a;2024年1月10日 工具简介 自称“Model-Oriented Programming”&#xff0c;把图形和文本结合起来&#xff0c;支持Java、PHP和Ruby代码生成&#xff0c;可以在线使用&#xf…...

ubuntu20-github不通问题

github不通 一直在github下载失败 Git报错fatal unable to connect to github.com: github.com[0: 20.205.243.166] >>> alsa-ucm-conf v1.2.6.3 Downloading(卡在这里,很烦啊) 然后搜了很多文档,然后以下操作: 1.GitHub.com - GitHub: Lets build from here Git…...

【MAC】Multi-Level Monte Carlo Actor-Critic阅读笔记

基本思想&#xff1a; 利用多层次蒙特卡洛方法&#xff08;Multi-Level Monte Carlo&#xff0c;MLMC&#xff09;和Actor-Critic算法&#xff0c;解决平均奖励强化学习中的快速混合问题。 快速混合&#xff1f; 在强化学习中&#xff0c;当我们说一个策略"混合得快"…...

[GN] 设计模式—— 创建型模式

文章目录 创建型模式单例模式 -- 确保对象唯一性例子优化饿汉式懒汉式 优缺点使用场景 简单工厂模式例子&#xff1a;优化优缺点适用场景 工厂方法模式 -- 多态工厂的实现例子优缺点优化适用场景 抽象工厂模式 -- 产品族的创建例子优缺点适用场景 总结 创建型模式 单例模式 –…...

无公网IP解决方案:内网穿透实现OpenClaw远程调用SecGPT-14B

无公网IP解决方案&#xff1a;内网穿透实现OpenClaw远程调用SecGPT-14B 1. 问题背景与挑战 去年我在尝试将OpenClaw接入本地部署的SecGPT-14B模型时&#xff0c;遇到了一个典型的技术困境&#xff1a;我的开发环境位于家庭宽带网络下&#xff0c;没有固定公网IP地址。这意味着…...

弦音墨影模型部署排错大全:从“镜像启动失败”到“生成结果空洞”

弦音墨影模型部署排错大全&#xff1a;从“镜像启动失败”到“生成结果空洞” 你是不是也遇到过这种情况&#xff1f;好不容易在星图GPU平台上找到了弦音墨影这个强大的AI模型&#xff0c;满心欢喜地点击部署&#xff0c;结果却卡在了第一步——镜像拉取失败。或者&#xff0c…...

多模态学习避坑指南:当你的模型出现‘模态懒惰‘时该怎么办?

多模态学习避坑指南&#xff1a;当你的模型出现模态懒惰时该怎么办&#xff1f; 在构建多模态AI系统时&#xff0c;工程师们常常遇到一个棘手问题&#xff1a;模型看似融合了多种数据源&#xff0c;实际表现却不如单模态模型。这种现象被学术界称为"模态懒惰"(Modali…...

零基础5分钟部署AI股票分析师:Ollama本地大模型一键生成专业报告

零基础5分钟部署AI股票分析师&#xff1a;Ollama本地大模型一键生成专业报告 1. 为什么你需要一个本地AI股票分析师 在金融投资领域&#xff0c;及时获取专业分析报告是做出明智决策的关键。但传统方式存在几个痛点&#xff1a; 数据隐私问题&#xff1a;使用在线分析工具需…...

比迪丽WebUI企业部署方案:K8s集群化管理+GPU资源弹性调度

比迪丽WebUI企业部署方案&#xff1a;K8s集群化管理GPU资源弹性调度 1. 引言&#xff1a;从单机到集群&#xff0c;企业级AI绘画的必经之路 如果你用过比迪丽WebUI&#xff0c;肯定体验过它生成动漫角色的强大能力。输入几个关键词&#xff0c;等上几秒钟&#xff0c;一张精美…...

雪女-斗罗大陆-造相Z-Turbo与STM32的趣味结合:在嵌入式设备上展示AI生成的艺术

雪女-斗罗大陆-造相Z-Turbo与STM32的趣味结合&#xff1a;在嵌入式设备上展示AI生成的艺术 你有没有想过&#xff0c;把《斗罗大陆》里那位冰清玉洁的雪女&#xff0c;通过最新的AI绘画模型“造相Z-Turbo”生成出来&#xff0c;然后让她在一块小小的、几十块钱的STM32开发板的…...

LeetCode:726. Number of Atoms - Python

问题描述&#xff1a; 给定一个化学式formula&#xff08;作为字符串&#xff09;&#xff0c;返回每种原子的数量。 原子总是以一个大写字母开始&#xff0c;接着跟随0个或任意个小写字母&#xff0c;表示原子的名字。 如果数量大于 1&#xff0c;原子后会跟着数字表示原子的…...

终极指南:如何使用Consul实现HyperLPR车牌识别服务的微服务化改造

终极指南&#xff1a;如何使用Consul实现HyperLPR车牌识别服务的微服务化改造 【免费下载链接】HyperLPR High Performance Chinese License Plate Recognition Framework. 项目地址: https://gitcode.com/gh_mirrors/hy/HyperLPR HyperLPR作为高性能的中文车牌识别框架…...

PyJWT与云原生应用集成的终极指南:如何构建安全的微服务架构

PyJWT与云原生应用集成的终极指南&#xff1a;如何构建安全的微服务架构 【免费下载链接】pyjwt JSON Web Token implementation in Python 项目地址: https://gitcode.com/gh_mirrors/py/pyjwt PyJWT&#xff08;Python JSON Web Token&#xff09;是一个功能强大且易于…...

【AI实战项目】项目四:文本匹配技术深度实践与应用

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请轻击人工智能教程​​​​https://www.captainai.net/troubleshooter 项目背景&#xff1a; 在智能交互与信息检索领域&#xff0c…...