千字文带你入门typescript
theme: qklhk-chocolate
highlight: a11y-dark
本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
前言
- vue3接触有一段时间了,还是用vue+js。今天一起来学习ts语法
- 本文从环境安装到ts入门
环境安装
- 安装node.js环境
- 全局安装typescript npm i -g typescript
- 创建一个ts文件
- 使用tsc对ts文件编译 (进入ts文件目录 执行tsc 文件名.ts)
ts基本类型
- 类型声明:
- 类型声明是ts中非常重要的特点
- 通过类型声明可以指定ts中变量(参数,形参)的类型
- 指定类型后,当为变量赋值时,ts会自动检查值是否符合类型声明,符合则赋值,否则就报错
- 类型声明给变量设置了类型,变量就只能存储当前类型的值
ts // 声明变量a的类型为number let a: number; // 把数字1赋给变量a a = 1 // 此处语法报错 'hello'为string a = 'hello'
ts // 声明b变量的类型为boolean 并赋值为true // let b: boolean = true // 在变量赋值过程中 ts会自动检测变量类型 let b = true // 此处语法报错 b为boolean 不能赋值为number类型 b = 123
- 函数参数类型
```ts // 自动检测a,b类型为number function sum(a, b) { return a + b } sum(123, 456)
// 将函数参数给定类型
function sum(a:number, b:number) {return a + b
}
// 参数只能给number类型 否则报错
sum(123, 456)
// 参数个数严格限制 由于参数就2个,传参传了3个,此处语法报错
sum(123, 456 ,789)
```
- 函数返回值类型
ts // 在函数后面加上返回值类型 返回值类型给定 function sum(a, b):number { // 此处语法报错 不能给string类型 return a + '456' } sum(123, 456)
- ts类型
| 类型 | 例子 | 描述| | --- | --- | -- | | number | 1,-33,2.5 | 任意数字 | string | 'hello',"hello" | 任意字符串 | boolean | true,false | 布尔值 | 字面量 | 其本身 | 限制变量的值就是该字面量的值 | any | * | 任意类型 | unknown | * | 类型安全的any | void | 空值(undefined) | 没有值或undefined | never | 没有值 | 不能是任何值 | object | {name:'vike'} | 任意js对象 | array | [1,2,3] | 任意js数组 | tuple | [4,5] | 元组 ts新增类型 固定长度数组 | enum | enum{A,B} | 枚举 ts新增类型
- 字面量类型声明
```ts // a声明为10 不能更改 let a:10 // 此代码报错 不能赋值为11 a = 11
// 字面量类型声明基础用法
// b声明为man或者woman 可以使用|来连接多个类型
let b : "man" | "woman"
b = "man"
b = "woman"
// 此代码报错 不是定义的字面量类型
b = "vike"
```
- 多个类型声明
- 使用|来连接多个类型
- 联合类型
ts let a: boolean | string a = true a = 'hello'
any 类型
- any表示的是任何类型
- 变量设置了any类型后,相当于关闭了对该变量ts的类型检测
- ts种不建议使用any类型
- 声明变量不指定类型,ts解析器自动判断变量类型为any
- any类型的变量可以赋值给任意变量 ```ts // 显示any类型 let b : any b = 123 b = 'hello' b = true
// 隐式any类型 let b ```
unknown 类型
- 表示未知类型的值
ts let b : unknown b = 123 b = 'hello' b = true
+ unknown 和 any的区别 - any 可以赋值给其他变量 污染环境 - unknown 只影响自己 - unknown 实际上就是一个类型安全的any - unknow 类型的变量不能赋给其他变量
```ts
let b : any b = 123 b = 'hello' b = true
let s : string
// 赋值成功 污染变量s
s = blet c : unknown
c = '123'
// 赋值不成功 s还是string类型 代码报错
s = c
``` + unknown 类型赋值 - 1. if 判断类型是否相同 - 2. 类型断言 告诉解析器变量的实际类型
ts let s : string let c : unknown c = '123' // if 判断 if (c === 'string') { s = c } // 断言 方法1 s = c as string // 断言 方法2 s = <string> c
void 类型
- 用来表示空 函数为例 就是没有返回值
ts function fn(): void { // 此处代码报错 return 123 // 此处代码正常运行 return null return undefined }
- 用来表示空 函数为例 就是没有返回值
never 类型
- 表示永远不会返回结果
- 常用于报错,不能返回任何空和undefined都不行
ts function fn1() : never { throw new Error('报错信息') }
- object 类型
- object表示js的一个对象
- 对象里有多少参数就要写多少参数
- 如果参数不齐 就在参数后面跟?表示不确定参数
```ts let d: { name: string, age: number } d = { name: 'vike', age: 18 }
// 特殊写法 不报错 表示可选属性
let d: { name: string, age: number , sex?: string}
d = { name: 'vike', age: 18 }// 特殊写法 传参过多 propName是自定义写法 any是属性值
let e: { name: string, [propName: string]: any }
e = { name: 'vike', age: 18, sex: 'man' }
```
- 设置函数结构的类型声明
- 语法: (形参:类型,形参:类型 ...)=>返回值
ts let f : (a:number,b:number)=>number f = function(a, b):number { return 10 }
+ array 类型 - 数组声明两种方式 - 类型[] - Array<类型> ts // 字符串数组 创建方式 let h : string[] h = ['1', '2', '3'] // 数字数组 创建方式 // let g : number[] let g : Array<number> g = [1, 2, 3]
tuple 类型
- 元组就是固定长度的数组
- 语法: [类型, 类型, 类型]
ts let j : [string, number] j = ['123', 123]
enum 类型
- 枚举类型
- Gender
```ts enum Gender { Male = 0, Female = 1 }
let i: { name: string, gender: Gender }
i = { name: 'vike', gender: Gender.Male }
```
特殊符号
- & 表示同时
ts let x: { name: string } | { age: number } x = { name: 'vike', age: 18 }
- & 表示同时
类型的别名
- 给自定义类型取简单别名
ts type MyType = 1 | 2 | 3 | 4 | 5 let k : MyType let l : MyType
总结
- 今日 typescript 基础及类型知识 get~
千字文带你入门typescript相关推荐
- 15分钟带你入门sklearn与机器学习——分类算法篇
作者 | 何从庆 本文转载自AI算法之心(ID:AIHeartForYou) [导读]众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机 ...
- 这38篇原创文章,带我入门深度学习!
这38篇原创文章带我入门卷积神经网络,循环神经网络和强化学习,希望对您有帮助. 37. 深度学习算法(第37期)----如何用强化学习玩游戏? 36. 深度学习算法(第36期)----强化学习之时 ...
- TensorFlow 2.0 极简教程,不到 20 行代码带你入门
今天,Google 发布了 TensorFlow 2.0 的 alpha 版本,真是千呼万唤始出来,对应的 2.0 官方教程 也释出,本文翻译了官方最简单的一个教程,带你入门 TensorFlow. ...
- 15 分钟带你入门 sklearn 与机器学习(分类算法篇)
众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机器学习库.它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度增强,k-me ...
- Sklearn 损失函数如何应用到_15 分钟带你入门 sklearn 与机器学习(分类算法篇)...
众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机器学习库.它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度增强,k-me ...
- 技术解析+代码实战,带你入门华为云政务区块链平台
摘要:政务区块链平台是行业区块链平台的初步实践,未来在区块链技术的发展下,还会打造面向其他领域的链管平台,构建多方协同的分布式账本,让区块链应用更便捷高效的为产业服务. 本文分享自华为云社区<技 ...
- linux 中国-新手村,从新手村开始,手把手带你入门梳理内核代码
原标题:从新手村开始,手把手带你入门梳理内核代码 在上一期内容中,Java离Linux内核有多远? 我们介绍了从 JVM 到内核的编译原理,告诉大家应用和系统工程师如何接触到内核. 本文将 从一个简单 ...
- 带你入门SpringCloud统一配置 | SpringCloud Config
前言 在微服务中众多服务的配置必然会出现相同的配置,如果配置发生变化需要修改,一个个去修改然后重启项目的方案是绝对不可取的.而 SpringCloud Config 就是一个可以帮助你实现统一配置选择 ...
- 带你入门SpringCloud 之 服务网关 Zuul
前言 服务端提供 RestFul API ,客户端如果想要使用某个服务直接调用服务的API 即可.但是在微服务环境中会有很多的具体服务,而客户端在需要使用众多的服务时在和具体的服务打交道这样虽然可以实 ...
最新文章
- SQL Server中自定义函数和游标应用的经典案例
- ios手机连接远程服务器,04-iOS逆向工程使用SSH通过USB远程登录越狱iPhone
- qstring如何初始化_QString介绍
- 成都python工作-成都找工作|成都人才网|成都全职招聘信息-成都58同城
- 微软称电脑系统识别能力已经超越了人类
- html4.0编辑器,KindEditor HTML(在线编辑器)
- 学数据结构,仅仅须要主要的编程体验
- LCD1602液晶显示
- BIO,NIO和AIO的区别
- win11无法下载steam怎么办 Windows11无法下载steam的解决教程
- 我的ssis和ssas报错记录
- thinkPHP 表单自动验证功能
- Python version 3.3 required, which was not found in the registry
- python多重背包_多重背包
- 密码学、信息安全、信息隐藏(论文)
- java反射之Method的invoke方法实现
- 虚拟机建Mac系统步骤
- 如何在word中设置带悬挂缩进对齐的多行???
- 2016年度人物揭晓:任正非王健林最具影响,贾跃亭当选风云人物
- html修改word页边距,Word怎么只修改一页的页边距,而不影响同一文件中的其他页?...
热门文章
- 《炬丰科技-半导体工艺》超宽带隙半导体
- Wifi BT 地址格式
- 《英汉大词典》勘误、增补、置疑@REX【整理完毕】
- Exif Editor for Mac照片Exif信息查看编辑器
- 暴力推荐:MiniTool Partition Wizard Home Edition
- webots建立四连杆机构模型
- 锐捷云桌面持续领跑的背后
- java 二维数组输出菱形边_在二维数组Java中绘制数字菱形
- 考试成绩分析系统php,ASP考试成绩分析系统的设计与实现(源代码+论文)
- android手机联系人怎么备份软件,安卓手机怎么导入手机通讯录(转移通讯录的3种方法)...