【TS】TypeScript 一小时速成

简介

1.类型推断

2.类型注解

3.类型断言

4.基础类型和联合类型

5.数组 元组 枚举

6.函数

7.接口

8.类型别名

9.泛型

简介

本文适用于刚刚学完react18(使用jsx开发的版本),想使用ts开发,但是又不想投入太多时间学习ts的详细语法,想快速上手使用ts开发react的同学

进入TS官网TypeScript: JavaScript With Syntax For Types. (typescriptlang.org)

我们练习可以有两种方式一个是下载相关的开发工具,另外就是官网里有在线的方式

我使用的是在线版本,后续开发会在react项目里加上ts,使用下面命令行就可以

npm install typescript --save-dev

1.类型推断

ts会根据你变量的初始值进行一个类型推断,会面一旦变成其他类型就会报错

let str = 'ssss'
str = 10

2.类型注解

在变量上显示的设置变量类型如下,定义了一个叫str的变量,类型为字符串。

3.类型断言

如下图代码,因为代码不确定你是否全部都大于2可能会出现undefined的情况所以报错了

let num = [1,2,3]
const result = num.find(item => item > 2)
result * 5

我们需要使用类型断言,就是你自己很确定会有大于2的数字

let num = [1,2,3]
const result = num.find(item => item > 2) as number
result * 5

4.基础类型和联合类型

let v1: string = 'abc'
let v2: number = 10
let v3: boolean = true
let nu: null = null
let un: undefined = undefined

let v4: string | null = null

let v5: 1| 2 | 3 = 2

v1是字符串类型

v2是数字类型

v3是布尔类型

nu是null类型,就这一个值

un是undefined类型,也是就这一个值

v4是字符串类型,但是有可能会取不到值,取到了是string,取不到就是null

v5是只能取1 2 3 这三个中的一个为值,用其他的就会报错

5.数组 元组 枚举

数组:

js的数组是可以有其他类型的,就是数字和字符串等等其他类型可以混用

但是在ts中,要限制数组的类型,有如下两种方式

let arr: number[] = [1,2,3]
let arr1: Array<string> = ['a','b','c']

元组:

需要把元组中每个数据类型进行设置如下

let t1: [number,string,number] = [1,'d',10]

可以对相应的进行修改,类型必须对,不然会报错

元组可以设置可选参数在类型后面加一个?

let t1: [number,string,number?] = [1,'d',10]
let t2: [number,string,number?] = [1,'d']

枚举

enum MyEnum{
    A,
    B,
    C
}

有两种使用方式

enum MyEnum{
    A,
    B,
    C
}
console.log(MyEnum.A)
console.log(MyEnum[0])

6.函数

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

分别设置了参数类型和返回值类型,如果类型不同会报错,

特别的是void这个返回类型,如果函数没有返回值,要定义成void,不然会返回undefined

function MyFn(a = 10,b?:number):number{
    return a
}

设置a的默认值为10,b为可选参数,可选参数要在正常参数的右边

function MyFn(a = 10,b?:number,...rest: number[]):number{
    return a
}
const f = MyFn(20,19,1,2,3,4)

剩余参数,会放到数组中去在最右边,上文中的1,2,3,4会放到剩余数组中去

7.接口

接口通常用来一个对象的定义 和java里的实体类挺像的

interface Obj {
    name: string,
    age: number
}

const obj: Obj = {
    name: 'a',
    age: 10
}

8.类型别名

将类型定义成MyUserName,

type MyUserName = string | number
let a : MyUserName = 10

9.泛型

可以适用不同类型的操作(在参数的括号之前加一个<T>)后面参数和返回类型,可以任意改,你改了,就要和泛型是一个类型,不改就是用自己原来的类型

function MyFn<T>(a: T,b:T) : T[] {
    return [a,b]
}

MyFn<number>(1,2)
MyFn<string>('a','b')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马武寨山的猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值