千字文带你入门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'

1633225424.png

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)

1633228012(1).png

  • 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 = b

let 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~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值