TS类型2

类型别名

使用type定义类型

type Age=number;
const a:Age=12;
type user={
  age:number,
  name:string
}
const b:user={
  age:10,
  name:'李四'
}

类型别名存在块级作用域,里层定义的会覆盖外层

并集和交集

类型运算符:”|“和”&“

|

表示两个类型的并集

let a:number|string="李四"; 
 a=12;
&

表示两个类型交集

type A = {
  age: number;
  weight:number,
};
type B = {
  age: number;
  name: string;
};
const user: B & A = { // 必须有两个type的所有属性,并不是相交那部分属性
  age: 12,
  name:"123",
  weight:14,
};

数组

数组表示方法有:T[]或者Array其中T表示类型

type A = {
  age: number;
  weight:number,
};
const user: A[]= [{
  age: 12,
  weight:14,
}]
const user2: Array<A>= [{
  age: 12,
  weight:14,
}]
元组

array的子类型,特点:长度固定、各索引位上的值固定的已知类型

let b: [string, string, number] = ["hello", "word", 1]; // 长度固定、索引位置值固定
let c: [string, string, number?] = ["hello", "word"];// ?表示该值可以不存在
只读数组
let a: readonly number[] = [1, 2];
a.splice(0); // 报错不可修改只读数组
type A = readonly string[];
let c: A = ["hello"];
c[0] = "4"; // 报错 类型“A”中的索引签名仅允许读取
只读元组
let a: readonly [number, number] = [1, 2];
a[0]=4; // 报错 无法分配到 "0" ,因为它是只读属性

null以及undefined

和JS没区别

void

表示函数没有返回值

function fo(): void { // void 表示此函数没有返回值
  console.log(13);
  return 12 // 报错 因为你定义了没有返回值,所以会抛出不能将类型“number”分配给类型“void”。
}

never

函数根本不返回(抛出异常或者死循环

枚举 enum

列举类型中包含的各个值,可以理解为编译时==“键固定的对象”==

enum Lanuage {
  English = 0,
  Spanish = 1,
}
enum Color {
  Red = "#C10000",
  white = "255",
}
console.log(Lanuage.English); // 0
console.log(Lanuage[1]); // 1
反向查找

枚举的类型支持反向查找,这样会有个问题,查不到的就是undefined,ts没法给你做校验他是否存在

enum Lanuage {
  English = 0,
  Spanish = 1,
}
console.log(Lanuage[1]); // 0
console.log(Lanuage[3]); // undefined
连续数值

如果是连续数值只需要定义第一个值,TS会自动+1

enum Lanuage {
  English = 0,
  Spanish, // 1 自动 +1
}
const enum 子类型禁止反向查找

使用const定义可以禁止反向查找

const enum Lanuage {
  English = 0,
  Spanish = 1,
}
console.log(Lanuage[1]); // 报错 只有使用字符串文本才能访问常数枚举成员。

enum与const enum编译成JS后的区别

enum
 enum Lanuage {
  English = 0,
  Spanish = 1,
}
// 编译为:
var Lanuage;
(function (Lanuage) {
    Lanuage[Lanuage["English"] = 0] = "English";
    Lanuage[Lanuage["Spanish"] = 1] = "Spanish";
})(Lanuage || (Lanuage = {}));
const enum

不会编译为JS代码,所以使用const enum会减少编译后JS的包体积

类型小结

类型子类型
boolenBoolen字面量
bigintBigint字面量
numberNumber字面量
stringString字面量
symbolunique symbol
objectObject 字面量
数组元组
enumconst enum
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值