前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript不学?你养我啊[2]

TypeScript不学?你养我啊[2]

作者头像
用户4793865
发布2023-01-12 14:06:37
2280
发布2023-01-12 14:06:37
举报
文章被收录于专栏:前端小菜鸡yym前端小菜鸡yym

引用数据类型

object

如下都是object对象数据类型。

代码语言:javascript
复制
let a = {'name':'test'}
let fun = function(){}
复制代码

但是,如果我们如下使用object来做类型约束。就显得没什么用,因为太宽泛了,万物皆对象

代码语言:javascript
复制
let a:object
复制代码

{}来指定对象中的属性

如下这个对象中有name属性,并且类型需要时字符串类型。

代码语言:javascript
复制
let b :{name:string}
复制代码

只有给name属性赋值、并且是字符串的值。才不会报错。

代码语言:javascript
复制
b = {
    name:'sun'
}
复制代码

如果为空对象,则会报错。(并且属性添加多了肯定也会报错)

image.png
image.png

问题来了

如果还有一个age属性,有的情况有、有的情况没有怎么办?如下在冒号前加一个问号,表示这个属性是可选的。

代码语言:javascript
复制
let b :{name:string,age?:number}
复制代码

那么问题又来了

如果我有多个不确定的值。我们可以这么写 [propName:string]:any 中括号里的 propName是属性名、随便写的,写什么都可以。:string属性名的类型是 stringany 表示任意类型的属性

代码语言:javascript
复制
// 字符串属性名,任意类型属性
let cs : {name:string,[propName:string]:any}
cs = {name:'sss', age:1, sex:'female'}
复制代码

函数

如下这种类型约束,与 :object一样,太宽烦了。

代码语言:javascript
复制
let fun :Function
复制代码

我们使用下面,类似箭头函数的写法

代码语言:javascript
复制
let fun1 : (aa:number,bb:number)=>number
复制代码

在给fun1赋值的时候,参数类型、返回值类型还是需要再约束的。

语法: (形参:类型,形参:类型...)=> 返回值

代码语言:javascript
复制
fun1 = function(n1:number,n2:number):number{return n1+n2}
复制代码

array 数组

为了性能来说,我们数组中大部分存储的是同类型的值。

表示方式1 []

如下,字符串类型的数组

代码语言:javascript
复制
let str_arr:string[]
str_arr = ['1','2','3']
复制代码

如下,数值类型的数组

代码语言:javascript
复制
let num_str:number[]
num_str = [1,2,3]
复制代码

表示方式2 Array

语法

Arrray<数据类型>

有点像Java

代码语言:javascript
复制
let arr:Array<number>
复制代码

Ts新增类型

相较于JS而言,TS新增几种类型。

tuple 元组

元组,其实就是固定长度的数组。当你的数据中元素时固定的时候,最好使用元组。

python语言中也有元组,写法是tuple = (1, 2, 3, 4, 5, 6, 7 ),当然这是句废话。

如下,表示需要两个元素,类型都是string

代码语言:javascript
复制
let tuple:[string,string]
tuple = ['a','b']
复制代码

而这个,表示需要两个元素,类型分别是string和number

代码语言:javascript
复制
let tuple1:[string,number]
tuple1 = ['c',1]
复制代码

enum 枚举

这个对象中包含name和sex两个属性。但是啊,我们作为性别,我们项目中不会存字符串的 '男'或者'女'(这里也有对数据库存储的内存的一些考虑)。我们大部分是存 0 或 1,但是前端展示的时候又要使用字符串的 '男'或者'女'。

代码语言:javascript
复制
let i :{name:string,sex:string}
i = {
    name:'李四',
    sex:'女'
}
复制代码
  • 使用enum关键字定义一个枚举值 Sex
  • 在对象i中,给sex约束类型为我们定义好的枚举值
  • 给对象i赋值事,sex的值就赋值0或1
代码语言:javascript
复制
enum Sex{
    male=0,
    female=1
}
let i :{name:string,sex:Sex}
i = {
    name:'李四',
    sex:0
}
复制代码

在前端先展示的时候你可以通过 if else判断是male或female 然后赋值展示男或女。但是我这里还是想用枚举的话就像如下的写法

我们定义一个对象。把枚举的Sex.male作为键

  • [Sex.male] 这里在计算属性属性名,Sex.male对应的也就是0
代码语言:javascript
复制
const SexText = {
    [Sex.male] : '男',
    [Sex.female] : '女'
}
let show = SexText[0]
复制代码

类型的别名

类型的别名,就相当于SQL语句给查到的字段as起别名一个道理。

  • 如下使用了type关键字
  • myType就是我起的类型名
  • 把string赋值给myType,那么myType现在就代表字符串类型
代码语言:javascript
复制
type myType = string;
let m:myType
复制代码
image.png
image.png

当然,给string类型起别名,毫无意义。

用处来了

下面两个变量的类型都是 1|2|3|4|5 也就是值必须是这五个数字中的一个。这种或的写法,也可以在结合枚举使用。这时我们可以给1|2|3|4|5 起别名。

代码语言:javascript
复制
let k:1|2|3|4|5
let j:1|2|3|4|5
复制代码
代码语言:javascript
复制
let range = 1|2|3|4|5
let k:range
k = 5
k = 6   //此时就会报错了
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引用数据类型
    • object
      • {}来指定对象中的属性
    • 函数
      • array 数组
        • 表示方式1 []
        • 表示方式2 Array
    • Ts新增类型
      • tuple 元组
        • enum 枚举
          • 用处来了
      • 类型的别名
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档