TypeScript(TS)基础内容详细介绍

news2024/11/26 2:53:38

目录

一、TypeScript概念

二、TypeScript特点

三、开发环境配置

四、初识ts

五、TypeScript类型声明

1、any:

2、number数字类型 

3 string字符串类型 

4 boolean布尔类型 

表示逻辑值:true 和 false。

5 数组类型

6 元组类型

7 enum枚举类型

8 void无任何类型

9 null类型

10 undefined类型

11 never类型

12 unknown类型

13 函数类型

14 对象类型 

15 类型的别名

16 箭头函数

 六、变量声明

七、字面量声明


一、TypeScript概念

以JavaScript为基础构建的语言。微软在js基础上,添加了一些语法。TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。

二、TypeScript特点

  1. 静态类型(强类型),声明时确定类型,之后不允许修改。
  2. TypeScript可处理已有的JS,并只对TS代码编译,完善了JS的确定。
  3. 开源(社区成熟),跨平台,所有支持Js代码,都可以使用TS。
  4. 丰富的配置项,强大的开发工具支持等等。

三、开发环境配置

1、下载node.js

下载地址:
下载 | Node.js 中文网

2、 配置国内镜像

npm config set registry

https://registry.npmmirror.com

3、全局安装

安装命令:npm i -g typescript

查看版本:tsc -v

四、初识ts

1、打开vscode编辑器,在你的目录下建立一个.ts为后缀名的文件

2、代码内容如下:

let str:string; //声明变量的类型
str = 'Hello,ts' //赋值的类型只能是上面定义的类型
console.log(str);

这个代码的意思是我们声明了一个str,并给他定义了字符串类型,紧接着我们又给他赋值

但是我们赋值的内容只能是我们上面给str定义的类型,也就是字符串类型。最后打印str

3、运行

(1)首先我们要打开当前文件下的终端

(2)然后编译文件,在终端输入命令:tsc xxx.ts,xxx为你创建的ts的文件名

(3)执行js文件,node xxx.js,xxx与上面一样

我们就可以看到代码结果了

五、TypeScript类型声明

5.1 基础类型

1、any

声明为 any 的变量可以赋予任意类型的值(字符串、数字、布尔值等等都可以)。​​​​

let str:any;//任意类型
str = 123
str = '456'
str = true
console.log(str);

我们通过打印看一下结果,结果为我们最后一次赋的值。

2、number数字类型 

双精度 64 位浮点值。它可以用来表示整数和分数。

let age:number;
age = 15
console.log(age);

这个就很好理解了,数字嘛,js就学过

3 string字符串类型 

字符串类型,用单引号、双引号、模板字符串(反引号)定义的文本。

let realname:string;
realname=`我的姓名是`+'枕头睡不醒'
console.log(realname);

4 boolean布尔类型 

表示逻辑值:true 和 false。

5 数组类型

数组类型就有点不一样了,可以仔细看一下

(1)在类型后面加[ ]数组里面是字符串

let realname:string[];
realname = ['枕头睡不醒','枕头睡不着','大耳朵图图']
console.log(realname);

 (2)使用范类型Array

这里的意思就是首先是数组类型后面加了一个尖括号,里面写了any就代表里面的值可以是任意类型

let persons:Array<any>;
persons=['枕头睡不醒',18]
console.log(persons);

 

6 元组类型

元组类型用来表示已知元素数量类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let zs:[string,number,number];
zs = ['张三',14,18]
console.log(zs);

7 enum枚举类型

枚举类型用于定义数值集合

什么意思呢,我们直接看代码嘿嘿嘿

enum days{Sun, Mon, Tue, Wed, Thu, Fri, Sat}
console.log(days.Sun);
console.log(days.Mon);
console.log(days.Tue);
console.log(days.Wed);

看到这里大家是不是很奇怪,为什么打印出来的是数字,其实他是数字枚举如果没有初始化,默认初始化值0,之后每项+1 ,所以才是这个结果,

那如果有初始化值呢?

enum days{Sun, Mon=10, Tue, Wed, Thu, Fri, Sat}
console.log(days.Sun);
console.log(days.Mon);
console.log(days.Tue);
console.log(days.Wed);

 如果有初始化,则在初始化值的基础上,每项+1,只要不是第一个值,那么第一个值还是从0开始。

总结:

数字枚举如果没有初始化默认初始化值为0每项+1

如果有初始化,则在初始化值的基础上,每项+1

还有就是不要再语法中给上面的属性赋值,会导致错误滴。

8 void无任何类型

void用于标识方法返回值的类型,表示该方法没有返回值。

声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null;

声明一个方法,没有返回值:

function say():void{
    console.log('hello,ts!')
}
say()

9 null类型

这个就不用多介绍了,js中经常看到的,表示对象值缺失。

10 undefined类型

这个也是老熟人了,初始化变量但未定义值。

let realname
console.log(realname);

11 never类型

never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

比如函数抛出一个异常:

function hello(str:string):never{
	throw new Error(str);
}

12 unknown类型

unknown未知类型 自己可以赋值任意类型,但是不可以赋值给别人,

在这里我们会提到一个叫类型断言,什么意思呢?来,直接看代码

let realname:unknown;
realname ="张三"
realname =19

类型断言,因为我前面是 unknown类型,我不知道他说啥类型,所以我在后面复制的时候直接给他加上一个类型。一共有两种写法呦

写法一:

let realname:unknown;
realname ="张三"
str = realname as string //类型断言 断言他是字符串
console.log(realname);

写法二:

let realname:unknown;
realname ="张三"
str = <string>realname;
console.log(realname)

总结:

类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。

13 函数类型

function sum(a:number,b:number):number{
    return a+b
}

console.log(sum(1,2));

这里要注意,我们定义的值a和b都是number类型,所以我们返回的也必须是number类型

14 对象类型 

(1)最简单的,这个其实没啥用哈

let p:object;
p={
    realname:'张三',
    age:18
}

(2)各个属性限制"死"

let P1:{realname:string,age:number}//定义类型
P1 = {realname:"张三",age:19} //赋值需要上面定义保持一致

(3)上面这个我的属性的类型都限制死了,那么就必须传值,那如果我不想给其中的一个传值呢?那就需要借助这个了,对就是问号

let p:{realname:string,age?};
p={realname:'张三'}

看,结果也不会报错 ,就非常的"神奇"

还有一种情况,就是我们属性名不确定的时候,这个也有解决办法滴

let p:{realname:string,[propName:string]:any}
p={realname:'张三'}
P = {realname:"张三",age:19}

当属性名不确定时,定义 propName,这个propName是随便定义的,大家喜欢就行,但是最好语义化,any就是类型啦

15 类型的别名

说道现在了,就会有人好奇,拿我可不可以自定义类型的别名呢,当然也是可以的,我们需要用到type

type mytype = string
let a:mytype;
a='123' //error

16 箭头函数

可以定义格式(其实就是定义了我们下面用到的函数格式)

let sum:(a:number,b:number)=>number;
sum = function(a:number,b:number):number{
    return a+b
}
 console.log(sum(1,2));

 六、变量声明

1 命名规则

var [变量名] : [类型] = 值;

例:let str:string = "hello";

(1)变量名称可以包含数字和字母。

(2)除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。

(3)变量名不能以数字开头。

(4)变量不要使用 name 否则会与 DOM 中的全局 window 对象下的 name 属性出现了重名。

2 声明未设置

var [变量名] : [类型];

声明变量的类型,但没有初始值,变量值会设置为 undefined;

3 声明未设置类型

var [变量名] = 值;

声明变量并初始值,但不设置类型,该变量可以是任意类型:

七、字面量声明

看三个例子

let a:100
 a=100 

let sex:"男"|"女"
sex="男"

let flag:boolean |string
flag=true

第一个定义了a 后面直接类似于赋值,它只能是100,其他都不行

第二个定义了sex 里面有两个值,男或者女中间是竖杠代表着或,也就是只能是男或者女

第三个和第二个差不多,d定义了布尔类型,那么他们只能是ture或者false

今天的分享就到此结束啦,要加油啊,冲冲冲。

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

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

相关文章

[附源码]Python计算机毕业设计SSM篮球馆预约小程序(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MySQL介绍与安装(超详细)

数据库介绍 数据库(database)简称DB&#xff0c;实际上就是一个文件集合&#xff0c;是一个存储数据的仓库&#xff0c;本质就是一个文件系统&#xff0c;数据库是按照特定的格式把数据存储起来&#xff0c;用户可以对存储的数据进行增删改查等操作。 数据库存储数据特点 ●…

零拷贝原理与实现

1.传统拷贝 FileInputStream、FileOutputStream read&#xff1a;将数据从磁盘读取到内核态缓冲区&#xff0c;再从内核态缓冲区拷贝到用户缓冲区 write&#xff1a;将数据从用户缓冲区写入到socket缓冲区&#xff0c;再从socket缓冲区写入到网卡设备 内核空间&#xff1a;…

Error: [mobx-miniprogram] no store specified (小程序全局数据共享bug)

话不多说&#xff0c;上bug&#xff01;&#xff01;&#xff01; 这个错误提示引入的store文件没有被指定&#xff0c;但是看了一下以为是后面的路径没引对&#xff0c;就重新引入还是不行&#xff0c;页面效果渲染不出来&#xff0c;然后查文档也没遇到类似的问题&#xff0…

【JSP】JSTL汇总——源码解析

JSTL什么是JSTL使用JSTL的步骤JSTL标签的原理分析标签源码看核心标签库中的forEach标签主标签库常用标签forEach标签begin、end、step属性stuStatus属性if标签test属性var和scopechoose和when标签什么是JSTL JSTL全称为 Java Standard Tag Library&#xff08;Java标准标签库&…

[附源码]计算机毕业设计springboot区域医疗服务监管可视化系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C++读写Excel有许多开源库

1、OpenXLSX GitHub - troldal/OpenXLSX: A C library for reading, writing, creating and modifying Microsoft Excel (.xlsx) files. 依赖于第三库&#xff1a; PugiXMLZippy (C wrapper around miniz)Boost.Nowide (for opening files with non-ASCII names on Windows)…

(二)初识Vue

文章目录Vue环境搭建第一步&#xff1a;Vue下载第二步&#xff1a;安装开发者调试工具第一个Vue程序第一步&#xff1a;引入Vue.js第二步&#xff1a;关闭生产提示第三步&#xff1a;准备容器第四步&#xff1a;创建Vue实例第一个Vue程序的小细节细节一&#xff1a;如果使用的是…

Vue 2.0/3.0

vue核心 vue官网 1、 英文官网: https://vuejs.org/ 2、中文官网: https://cn.vuejs.org/ 模板语法 插值语法&#xff08;双大括号表达式&#xff09;指令语法&#xff08;以 v-开头&#xff09; Vue模板语法有2大类&#xff1a; 1.插值语法&#xff1a; 功能&#xff1a;用…

01【SpringMVC快速入门】

文章目录01【SpringMVC快速入门】一、SpringMVC快速入门1.1 SpringMVC概述1.1.1 SpringMVC是什么1.2 SpringMVC环境搭建1.2.1 创建web项目1.2.2 Maven依赖&#xff1a;1.2.3 配置web.xml1.2.4 SpringMVC配置1.2.5 编写Controller1.2.6 编写视图页面01【SpringMVC快速入门】 一…

高等数学(第七版)同济大学 习题10-4 (前7题)个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-4&#xff08;前7题&#xff09; 函数作图软件&#xff1a;Mathematica 1.求球面x2y2z2a2含在圆柱面x2y2ax内部的那部分面积.\begin{aligned}&1. \ 求球面x^2y^2z^2a^2含在圆柱面x^2y^2ax内部的那部分面积.&\e…

设置Oracle表空间只读

如果对表存储的规划较好&#xff0c;将业务相关的表都放在几个表空间里&#xff0c;可以通过设置表空间只读的方式&#xff0c;让这些表只读&#xff1a; alter tablespace <tablespace name> read only; 解除只读&#xff1a; alter tablespace <tablespace name>…

2023年软考备考,软件设计师知识点速记,速看

2023上半年软考中级软件设计师知识点速记分享给大家&#xff0c;快来一起打卡学习吧&#xff01; 1、码制的表示 2、浮点数的表示 &#xff08;1&#xff09;浮点数格式 阶码决定范围&#xff0c;阶码越长&#xff0c;范围越大&#xff1b; 尾数决定精度&#xff0c;尾数越…

Android编写一个视频监控App

Android编写一个视频监控App 很久没写app了&#xff0c;小项目需要写一个rtmp拉流的视频监控app&#xff0c;简单记录一下。 参考&#xff1a;Android实现rtmp推拉流摄像头&#xff08;三&#xff09;_空空7的博客-CSDN博客_android rtmp拉流 相关库 引用外部库首先添加这个…

C_C++文件,字符串和控制台格式化处理总结

在实际业务开发中经常会用到文件&#xff0c;字符串和控制台格式化操作&#xff0c;格式化操作无非就是将数据转成指定格式存储在文件或者字符串&#xff0c;或者显示在控制台上&#xff0c;或者反过来。本篇结合实际工作将C/C语言中常用的文件&#xff0c;字符串和控制台常用格…

[附源码]Python计算机毕业设计Django高血压分析平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数据抓取-bs4、XPath、pyquery详细代码演示

数据抓取-bs4、XPath、pyquery 一般抓取某个网站或者某个应用的内容&#xff0c;内容分为两个部分 非结构化的文本&#xff1a;HTML文本 结构化的文本&#xff1a;JSON、XML 非结构化的数据常见的解析方式有&#xff1a;XPath、CSS选择器、正则表达式 XPath语言 XPath是X…

golang知识点整理

目录 1、goroutine GMP模型 2、goroutine阻塞的处理 3、goroutine内存泄漏 4、map原理、扩容 5、go内存管理 6、go的gc 1、goroutine GMP模型 1. G代表一个goroutine对象&#xff0c;每次go调用的时候&#xff0c;都会创建一个G对象 2. M代表一个线程&#xff0c;每次创建…

JavaScript和Node.js的关系

JavaScript和Node.js的关系 JavaScript是一门编程语言&#xff08;脚本语言&#xff09;&#xff0c;JavaScript以前是在浏览器里执行的&#xff0c;需要浏览器里的JavaScript引擎&#xff0c;Firefox有叫做Spidermonkey的引擎&#xff0c;Safari有JavaScriptCore的引擎&#x…

第2章物理层——2.数据通信基础知识

一.数据通信系统模型 一个通信系统可以划分为三大部分: 源系统&#xff08;发送端&#xff09;&#xff0c;传输系统&#xff08;传输网络&#xff09;&#xff0c;目的系统&#xff08;接收端&#xff09; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传…