ts的类型

一、类型声明

let 变量:类型;
let 变量:类型 = 值;

当类型声明和赋值同时进行时,TS编译器会自动判断变量的类型,类型声明可省略;
当类型声明和赋值同时进行时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错。

二、ts中的类型

1let c: 'hello' | 'hi'
	   c = 'hello'
	   c = 'hi'
	   c = 'halou' // 报错

2let a: boolean | string
	   a = 'hello'
	   a = true
	   a = 0 // 报错

// 只声明变量如果不指定类型,则TS解析器会自动判断变量类型为any(隐式的any)
// 不建议使用any
3let b: any
	   b = 'hello'
	   b = true
	   b = 0 
	   
// unknown 表示未知类型的值
4let d: unknown 
	   d = 'hello'
	   d = true
	   d = 0 

举例:
let s: string
s = b // b的类型为any,它可以赋值给任意变量

d = 'hello'
s = d   // 报错,unknown实际上是一个类型安全的any,不能直接赋值给其他变量

if(typeof d === "string") {
	s = d // 正确
}
// 类型断言
s = d as string //正确 类型断言,可以用来告诉解析器变量的实际类型,也可以写成s = <string>d

// void 表示空(undefined、null)
5function fn():void {}

// never 表示永远不会返回结果
6function fn2():never {
	throw new Error('出错了!')
}

// object表示一个js对象
// {} 用来指定对象中可以包含哪些属性
// ? 可选属性
7let a: object;
a = {};
a = function (){};

let b: { name: string, age?: number };
b = { name: '孙悟空' }

//  [propName: string]: any 表示任意类型的属性
// 必须得有name属性,其他可以随意添加
let c: { name: string, [propName: string]: any }
c = { name: '猪八戒', age: 18, gender: '男' }

// 设置函数结构的类型声明:
// 语法:{形参:类型, 形参:类型...} => 返回值
let d: (a: number, b: number) => number;
d = function(n1:number, n2:number):number {}

// 数组
8let e: string[]; // 表示字符串数组
   let f: number[]; // 表示数值数组,也可以写成 let f: Array<number> 
   f = [1, 2, 3]

// 元组,固定长度的数组
9let g: [string, number]
	g = ['hello', 3]

// enum 枚举
enum Gender {
	Male = 0,
	Female = 1
}
10let i: { name: string, gender: Gender }
     i = {
		name: '孙悟空',
		gender: Gender.Male	
	}
	console.log(i.gender === Gender.Male) // true

let j: { name:string } & { age: number };
// j = { name: '孙悟空' , age : 18 }

// 类型的别名
type myType = string;
let k: 1 | 2 | 3 | 4 | 5;
let l: 1 | 2 | 3 | 4 | 5;
let m: myType

type myType = 1 | 2 | 3 | 4 | 5;
let k: myType
k = 1

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值