【TypeScript】JavaScript VS TypeScript数据类型

news2024/12/23 14:18:52

💭💭

✨:JavaScript VS TypeScript数据类型

💟:东非不开森的主页

💜: 你若盛开,清风自来💜💜

🌸: 如有错误或不足之处,希望可以指正,非常感谢😉

TypeScript

    • 一、初识TypeScript
      • 1.1.TS VS JS
        • 1.1.1.JavaScript缺点
        • 1.1.2.TypeScript特点
      • 1.2.基本安装运行
    • 二、JS和TS相同数据类型
      • 2.1.number、boolean、string
      • 2.2.null undefined
      • 2.3.Symbol
      • 2.4.Array
      • 2.5.Object
      • 2.6.参数和返回值
      • 2.7.匿名函数的参数类型
      • 2.8.对象类型和函数类型的结合使用
      • 2.9.可选类型
    • 三、TS类型
      • 3.1..any
      • 3.2.unknown
      • 3.3.void
      • 2.9.never
      • 2.10.tuple

一、初识TypeScript

在这里插入图片描述

1.1.TS VS JS

1.1.1.JavaScript缺点

JS缺点

  • ES5以及之前的使用的var关键字关于作用域的问题
  • 最初JavaScript设计的数组类型并不是连续的内存空间
  • JavaScript没有加入类型检测这一机制

JavaScript不可以在代码编译期间发现代码的错误

1.1.2.TypeScript特点

⭐⭐⭐
特点

  • 始于JavaScript,归于JavaScript TypeScript可以编译出纯净、 简洁的JavaScript代码

TypeScript的出现弥补了JavaScript类型约束上的缺陷

  • TypeScript是拥有类型的JavaScript超集,它可以编译成普通、干净、完整的JavaScript代码

  • 我们可以将TypeScript理解成加强版的JavaScript

  • JavaScript所拥有的特性,TypeScript全部都是支持的,并且它紧随ECMAScript的标准,所以ES6、ES7、ES8等新语法标准,它都是支持的

  • 并且TypeScript最终会被编译成JavaScript代码,所以你并不需要担心它的兼容性问题

1.2.基本安装运行

⭐⭐⭐
两种方式:

  • 通过webpack,配置本地的TypeScript编译环境和开启一个本地服务,可以直接运行在浏览器上
  • 通过ts-node库,为TypeScript的运行提供执行环境
    安装
    检测是否安装成功
npm install typescript -g
tsc -- version

在这里插入图片描述

运行

  • 安装ts-node
  • 安装ts-node依赖:tslib @types/node -g
  • ts-node f.ts 运行
npm install ts-node -g

npm install tslib @types/node -g
// 运行
ts-node f.ts

二、JS和TS相同数据类型

⭐⭐⭐
变量声明:

  • 声明了类型后TypeScript就会进行类型检测,声明的类型可以称之为类型注解(Type Annotation);
var/let/const 标识符: 数据类型 = 赋值;

类型推导

  • 声明一个标识符时, 如果有直接进行赋值, 会根据赋值的类型推导出标识符的类型注解 这个过程称之为类型推导
  • let进行类型推导, 推导出来的通用类型
  • const进行类型推导, 推导出来的字面量类型

2.1.number、boolean、string

  • 数字 布尔 字符串类型
let num: number = 123
let flag: boolean = true
const name = 'kk'

2.2.null undefined

  • null undefined类型
const n1: null = null;
const n2: undefined = undefined;

2.3.Symbol

  • Symbol类型
const title1 = Symbol("title")
const title2 = Symbol('title')
const info = {
  [title1]: "程序员",
  [title2]: "老师"
}
  • 在对象中不能添加相同的属性名称,但是可以通过symbol来定义相同的名称
  • 因为Symbol函数返回的是不同的值

2.4.Array

  • 数组类型
  1. string[]:数组类型,并且数组中存放的字符串类型
  2. Array:数组类型,并且数组中存放的是字符串类型
let names: string[] = ["a", "b", "c"]
let nums: Array<number> = [1, 2, 3];

PS:

  • string: TypeScript给我们定义标识符时, 提供的字符串类型
  • String: JavaScript中字符串的包装类

2.5.Object

  • 对象类型
const info: object = {
  name: "kk",
  age: 18,
};

2.6.参数和返回值

  • 参数
    在定义一个TypeScript中的函数时, 都要明确的指定参数的类型
function sum(num1:number, num2: number):number {
    return num1 + num2
}
const res = sum(1, 2)
  • 返回值
    返回值可以明确的指定,也可以自动的进行类型推导

2.7.匿名函数的参数类型

匿名函数是否需要添加类型注解,最好不要哈哈哈

const arr: string[] = ["a", "b", "c"]
arr.forEach(function(item, index, arr) {
    console.log(item, index, arr)
})

2.8.对象类型和函数类型的结合使用

type ZType = {
    x: number
    y: number
    z?:number
}
function KKType(point: ZType) {
    console.log(point.x)
    console.log(point.y)
}
KKType({x:1, y: 2})

2.9.可选类型

?:

type ZType = {
    x: number
    y: number
    z?:number
}

三、TS类型

⭐⭐⭐

3.1…any

any类型表示不限制标识符的任意类型,并且可以在该标识符上面进行任意的操作,

  • 包括获取不存在的属性、方法;
  • 给一个any类型的变量赋值任何的值,比如数字、字符串的值;

在这里插入图片描述
这样都是不报错的

3.2.unknown

  • unknown类型默认情况下在上面进行任意的操作都是非法的
  • 要求必须进行类型的校验,才能根据缩小之后的类型,进行对应的操作
let foo: unknown = "aa"
if(typeof foo === "string") {
    console.log(foo.length)
}

3.3.void

  • ts中如果一个函数没有任何的返回值,那么返回值的类型就是void类型
  • 如果返回值是void类型,那么也可以返回undefined类型
function sum(num1: number, num2: number): void {
    console.log(num1 + num2)
}

2.9.never

实际开发中只有进行类型推导时,可能会自动推导出never,很少使用

  • 死循环
  • 封装框架/工具库的时候可以使用一下never
function handleMessage(message: string | number | boolean) {
    switch (typeof message) {
        case "string":
            console.log(message.length)
            break;
        case "number":
            console.log(message)
            break
        case "boolean":
            console.log(Number(message))
            break
        default:
            const check: never = message
    }
}

handleMessage("aa")
handleMessage(12)
handleMessage(false)

2.10.tuple

在函数中使用元组类型是最多的
存这些类型不一样的信息,用对象和元组都可以

const info:[string, number, number] = ["kk", 18, 1.7]

tuple通常可以作为返回的值,在使用的时候会非常的方便;

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

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

相关文章

【TS】TypeScript 实践中的 Equals 是如何工作的?

How does the Equals work in typescript 循着线索慢慢来 在 ts 中如何判断两种类型完全一致&#xff1f; 三年前&#xff0c;在社区有一场关于支持 type level equal operator 的讨论 TypeScript#27024。 大佬 mattmccutchen 给出了一个非常精彩的解决方案&#xff1a; Her…

智公网:教师编的这些规则要知道!

1、有了教师资格证&#xff0c;是否还需要考取编制&#xff1f; 答&#xff1a;有了教师资格证之后是需要继续教师编制考试的。只有通过了教师编制考试才能有教师编&#xff0c;只有一个教师资格证&#xff0c;只能证明是具备了从业资格。通过教师编制的人员被称为在编人员&am…

【Web开发】Python实现Web图表功能(D-Tale编译打包)

&#x1f37a;基于Flask实现服务器的相关文章如下&#x1f37a;&#xff1a; &#x1f388;【Web开发】Python实现Web服务器&#xff08;Flask快速入门&#xff09;&#x1f388;&#x1f388;【Web开发】Python实现Web服务器&#xff08;Flask案例测试&#xff09;&#x1f3…

MySQL中SQL语句执行顺序及优化

概要 本文章主要是分析SQL语句关键字的执行顺序&#xff0c;以及在每一个阶段我们有哪些优化&#xff0c;可以去做哪些优化&#xff0c;和注意事项。 1. SQL语句关键字的执行顺序 通常我们执行一条SQL语句它的执行顺序如下 selectfrom.joinwheregroup byhavingorder by聚合函…

Vitepress(二):部署

什么是Git Page github Pages可以被认为是用户编写的、托管在github上的静态网页。 github pages有300M免费空间&#xff0c;资料自己管理&#xff0c;保存可靠&#xff1b; 实现项目自动推送到Github 首先新建一个自己的项目用于存放github pages的内容 格式是 自己githu…

《元宇宙2086》影视工业弯道超车?《科普时报》刊登采访报道

科普时报-第267期 2023年01月06日 星期五 第05版&#xff1a;书香文史刊载了题目为“《元宇宙2086》影视工业弯道超车&#xff1f;”的关于高泽龙的采访报道。全文内容如下&#xff1a;在2022年中国金鸡百花电影节暨第35届中国电影金鸡奖期间&#xff0c;我创作的中国首部元宇宙…

Linux开发工具的使用(二)

文章目录Linux开发工具的使用&#xff08;二&#xff09;1.Linux编译器gcc/g使用1.1 背景1.2 验证每一个阶段的效果1.2.1 预处理1.2.2 编译1.2.3 汇编1.2.4 链接1.2.5 记忆1.3 链接的理解1.3.1 ldd指令1.3.2 预备1.3.3 动态库和静态库感性理解到实际理解2.Linux项目自动化构建工…

吴恩达《机器学习》——SVM支持向量机

SVM支持向量机1. 线性SVM1.1 从Logistic回归出发1.2 大边界分类与SVM1.3 调整正则化参数2. 非线性SVM&#xff08;高斯核函数&#xff09;2.1 高斯核2.2 非线性分类2.3 参数搜索数据集、源文件可以在Github项目中获得 链接: https://github.com/Raymond-Yang-2001/AndrewNg-Mac…

Java编程基础

1&#xff0c;基本概念 &#xff08;1&#xff09;JDK、JRE、JVM的关系&#xff1a; JDK&#xff1a;Java Development Kit&#xff0c;Java开发工具包JRE: Java Runtime Environment&#xff0c;Java运行环境JVM&#xff1a;Java Virtual Machine&#xff0c;Java虚拟机JDK包…

2023年山东最新建筑八大员(电气施工员)模拟真题题库及答案

百分百题库提供建筑八大员&#xff08;电气&#xff09;考试试题、建筑八大员&#xff08;电气&#xff09;考试预测题、建筑八大员&#xff08;电气&#xff09;考试真题、建筑八大员&#xff08;电气&#xff09;证考试题库等,提供在线做题刷题&#xff0c;在线模拟考试&…

【UE4 第一人称射击游戏】22-拾取弹药

上一篇&#xff1a;【UE4 第一人称射击游戏】21-添加动态扩散准心本篇效果&#xff1a;当角色触碰到弹药箱后&#xff0c;玩家的后备弹夹就会多50发子弹&#xff0c;并且触碰到弹药箱后&#xff0c;会播放相应的声音和粒子特效。步骤&#xff1a;新建一个蓝图类&#xff08;父类…

MySQL-5.7 innodb在线DDL操作(增删改索引、列、外键、表、外键)

基本概念 在开始阅读前&#xff0c;先熟悉下以下概念&#xff0c;以便更加方便理解。 DML DML&#xff08;Data Manipulation Language&#xff09;数据操作语言-数据库的基本操作&#xff0c;SQL中处理数据等操作统称为数据操纵语言,简而言之就是实现了基本的“增删改查”操作…

jenkins中错误总结

每次使用jenkins都会遇到不同的bug&#xff0c;接下来我们看一下这几个 libXrender.so.1: cannot open shared object file: No such file or directory 接下来我们看一下解决方案,一步一步安装好就可以了 yum install ksh -y yum install libXext.so.6 -y yum install libX…

案例分析 - 考查点总览

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 系分 - 案例分析 - 总览知识点 往年案例一览 一般情况下&#xff0c;往下数5、6年的题目出题形式&#xff0c;具有参考意义 年份试题一试题二试题三试题四试题五2022年系统分析与建模[结构化与面向对象分析、用例…

MySQL (四)------DML操作表记录-增删改【重点】DQL操作表记录-查询【重点】

DML操作表记录-增删改【重点】 准备工作: 创建一张商品表(商品id,商品名称,商品价格,商品数量.) create table product(pid int primary key auto_increment,pname varchar(40),price double,num int ); 1.1 插入记录 1.1.1 语法 方式一: 插入指定列, 如果没有把这个列进行列…

联合证券|2022年逾200家企业IPO“撤单”,谁在“临阵脱逃”?

刚刚过去的2022年&#xff0c;A股IPO募集资达5870亿元&#xff0c;创下前史新高。不过&#xff0c;也有不少“带病闯关”的IPO项目遇阻&#xff0c;计算数据显现&#xff0c;2022年A股IPO共有234家企业撤单&#xff0c;创9年以来最大撤回潮。 谁在惊惶万状&#xff1f; 2022年…

LeetCode[剑指offer 40]最小的k个数

难度&#xff1a;简单 题目&#xff1a; 输入整数数组 arr &#xff0c;找出其中最小的 k 个数。例如&#xff0c;输入4、5、1、6、2、7、3、8这8个数字&#xff0c;则最小的4个数字是1、2、3、4。示例 1&#xff1a; 输入&#xff1a;arr [3,2,1], k 2 输出&#xff1a;[…

C 语言的 互斥锁、自旋锁、原子操作

今天不整 GO 语言&#xff0c;我们来分享一下以前写的 C 代码&#xff0c;来看看 互斥锁&#xff0c;自旋锁和原子操作的 demo 互斥锁 临界区资源已经被1个线程占用&#xff0c;另一个线程过来访问临界资源的时候&#xff0c;会被CPU切换线程&#xff0c;不让运行后来的这个线…

基础算法(二)——归并排序

归并排序 介绍 归并排序是一种复杂度O(nlog(n)nlog(n)nlog(n))的排序算法&#xff0c;并且在任何情况下都是&#xff0c;但是它不是原地算法&#xff0c;即需要额外存储空间 其原理是&#xff0c;先将区间均匀分成左右两半&#xff0c;然后再对左右两半继续二分&#xff0c;…

Large Language Models Are Reasoning Teachers

Paper name Large Language Models Are Reasoning Teachers Paper Reading Note URL: https://arxiv.org/pdf/2212.10071.pdf twitter 宣传&#xff1a; https://twitter.com/itsnamgyu/status/1605516353439354880 TL;DR 提出了 Fine-tune-CoT 方法&#xff0c;旨在利用非…