TS01 数据类型|类型别名|枚举

1、基本类型约束

TS是一个可选的静态的类型系统

2、如何进行类型约束

仅需要在 变量、函数的参数、函数的返回值位置加上```:类型```

ts在很多场景中可以完成类型推导

any:表示任意类型,对该类型,ts不进行类型检查

3、基本类型

1、number

2、string

3、boolean

4、数组

let nums:number[];

let nums:Array<number>;

nums = [2,3,4,5]

5、object

6、null和undefined  是其他类型的子类型,他们可以赋值为其他类型

4、其他常用类型

1、联合类型

let  name: string | undefined

2、void类型:通常用于约束函数的返回值,表示该函数不会返回任何东西

3、never类型:通常用于约束函数返回值,表示该函数永远不会结束

4、字面量类型:表示使用一个值进行约束

let a:"A" //表示变量a只能取值A

let gender:"男"|"女" //表示gender只能取值男或者女

let user :{
    name:string
    age:number
}

5、元组类型:一个固定长度的数组,每一项的类型也确定

let tu :[string,number]

6、any类型:any类型可以赋值给任何类型,可以绕过类型检查

5、类型别名

对已知的一些类型定义名称

···

type 类型名 = ...

··· 

type Gender = "男"|"女"
type User = {
    name:string
    age:number
    gender:Gender
}
let u:User
u = {
    name:'sdrf',
    gender:"男",
    age:34
}
function getUsers(g:Gender):User[]{
    return [];
}

函数的相关约束

函数重载:在函数实现之前,对函数调用的多种情况进行声明

function combine(a:number,b:number):number;
function combine(a:string,b:string):string;
function combine(a:number|string,b:number|string):number|string{
    if(typeof a == 'number' && typeof b == 'number'){
        return a*b
    }else if(typeof a == 'string' && typeof b == 'string'){
        return a+b
    }
    throw new Error('a和b必须是相同类型')
}
const result = combine(2,3)

可选参数:可以在某些参数后加上问好,表示该参数可以不用传递,可选参数必须在参数列表的末尾

function sum(a:number,b:number,c?:number){
    if(c){
        return a + b + c
    }else{
        return a + b
    }
}

拓展类型-枚举

枚举通用用于约束某个变量的取值范围。

字面量和联合类型配合使用也能达到相同的目的

字面量类型的问题:

——在类型约束的位置会产生重复代码,可以使用类型别名解决该问题

——逻辑名称和真实的值产生的混淆,会导致当修改真实值的时候,产生大量的修改

type Gender = "帅哥"|"美女"
// 先生 女士  男 女  male  female
// 当修改真实的值的时候 要修改更多
let gender:Gender

gender = '男'
gender = '女'

function searchUsers(g:Gender){

}

如何定义一个枚举

···

enum 枚举名{

        枚举字段1=值1,

        枚举字段2=值2

}

···

enum Gender{
    male = '男',
    female = '女'
}
// 先生 女士  男 女  male  female
// 将逻辑含义与真实值分开 使用的时候用的都是逻辑变量
let gender:Gender

gender = Gender.male
gender = Gender.female

枚举的规则:

——枚举的字段可以是字符串或者数字

——数字枚举的值会自动自增

——被数字枚举约束的变量可以直接赋值为数字

——数字枚举的编译结果和字符串枚举有差异

最佳实践:

——尽量不要在一个枚举中既出现字符串字段又出现数字字段

——使用枚举时,尽量使用枚举字段的名称,而不使用真实的值

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值