TypeScript——2,类型

1,引入类型的概念

在JS中,变量可以赋值任意类型。

TS:这个类型的变量,只能存放这个类型的值。
不答应就报错。

举例:

let msg:string=123
console.log(msg)

效果:

在这里插入图片描述
默认也会生成js,后期可以配置,让他不生成。

2,声明类型

a)基本写法

let 名:类型=值

let msg:string="你好,世界!"

b)类型推断

如果声明时赋值,类型可以省略。
编译器会自动加上对应的类型。

let msg="你好,世界!"

//msg也是string类型

3,五大基本类型

类型 含义
number number
string string
boolean boolean
null null
undefined undefined

这没什么好说的。

4,杂七杂八的类型

类型 含义
any 不限定类型
unknown 不限定类型,不能赋值给别人
void 没有值
never 没有值
基本值 只能是该基本值
联合类型 可以存放多个类型的值

any

不限定,当JS用。

let msg:any
//想放啥放啥

不声明类型,不赋值,也会是any。

let msg;
//msg还是any

不建议使用。

unknown

any:可以赋值给任何变量。

let msg:any
let result:string=msg
//正常运行

unknown:不能赋值给别人。

let msg:unknown
let result:string=msg
//会报错

如何赋值给别人呢?

  1. 类型判断
let msg:unknown
if(typeof msg==="string"){
    
    
	let result:string=msg
}
//正常运行
  1. 类型断言

告诉解析器,这就是一个xxx类型。

let msg:unknown
let result:string=msg as string

写法二:

let msg:unknown
let result:string=<string>msg

只是不报错,但具体是不是这个类型,得由我们来判断。

void

一个标记,表示没有返回值。

function a():void {
    
    
	console.log(1)
}

never

一个标记,表示永远不会返回。

function abc(): never {
    
    
	throw new Error("error")
}

基本值

类型可以是一个基本值,表示只能赋值这个值。

let msg:1
//msg只能存放1

联合类型

或,可以存放string,boolean中的一种

let msg:string|boolean

与,既要有name,又要有age

let msg:{
    
    name:string}&{
    
    age:number}

自定义类型。

比如,只有1234四个值。

type myNum=1|2|3|4;

let msg:myNum

5,对象类型

类型 含义
object,{ } 对象
(xxx,xxx)=>xxx 函数
array 数组
tuple 元组
enum 枚举

基本对象

是对象就行,没有要求。

let abc:object
let bcd:{
    
    }

限定属性。

let abc:{
    
    name:string}

//对象,name属性要是string
//不能有其他属性

限定部分属性。

let abc:{
    
    
	name:string,
	[propName:string]:any
}
//可以随意加属性

函数对象

let abc: (a: number, b: number) => number;

abc = function (a: number, b: number) {
    
    
	return a + b;
}

数组

某一类型的数组

let abc: string[];

//只能存string

写法二:

let abc: Array<string>;

元组

数组,但是固定长度。

let abc: [string,number];

只能有两个元素,而且类型依次是string,number

枚举

只能在几个值之间选择一个。

enum Gender {
    
    
	Male,
	Female
}
let myGender: Gender;
myGender = Gender.Female

语义好一些。

猜你喜欢

转载自blog.csdn.net/qq_37284843/article/details/123632532