Skip to content

声明指定数据类型的变量

typescript
let a:number;

声明变量的同时赋值

typescript
// 声明完变量直接赋值
let c:boolean = false;

如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测,并对其加上类型限制

对函数类型进行类型声明

typescript
// 对函数的参数进行类型声明
// 对参数的返回值进行类型声明
function sum(a:number,b:number):number{
    return a+b
}

使用字面量进行类型声明

typescript
let a: 666;

// 使用情景1,表示sex只能被赋值为男或者女
let sex:"male"|"female"
sex = aaa  //报错
sex = "male" //可以

//使用情景2,表示只能被赋值为number或者string类型
let c:number | string
c = 222 //可以
c = false //报错

赋值后不可修改。

可以使用 | 来连接多个值。(联合类型)

任意类型

表示一个变量可以是任意类型,一个变量设置了any后,相当于关闭了TS的类型检测。

typescript
let c:any;

声明变量如果不去指定变量的类型,则TS解析器会自动认为该变量的类型为any (隐式any)。

unknown类型

表示一个未知的数据类型,实际上就是一个类型安全的 any

typescript
let c:unknown;
c = 666
c = "hi"

unknown类型和any类型的不同在于,一个unknown类型赋值给一个确定的数据类型会报错,一个any类型的变量赋值给一个确定的变量不会报错

typescript
let c:unknown;
c = "hello"
let a:string;
a = c // 报错

let d:any;
d = "hello"
let f:string;
f = d // 不会报错

类型断言

typescript
let e:unknown;
e = "hi"
let s:string;
// 类型断言, 告诉编辑器变量的实际类型
s = e as string;  // s = <string>e;

对象类型

typescript
let b:object;

// 限定一个对象里面属性的类型
// 1、属性名后面加上? 表示属性是可选的
let c:{name:string,age?:number}
c = {name:'lisa'}

// 2、不限定对象中属性的长度
let b:{name:string,age:number,[propName:string]:any}
b = {name:'lisa',age:22}

函数类型

typescript
let d:(a:number,b:number)=> number
d = function (a:1,b:2){
    return a+b
}

数组类型

typescript
// 表示数值数组

// 写法 1
let a:number[]
 a = [12,2,3,4,5]
// 写法 2
let b:Array<number>
b = [1,2,3,4]

元祖类型

元祖就是长度固定的数组。

typescript
let m :[string,number]
// m = ['hello',] //报错
m = ['hello',999]

枚举类型

typescript
// 枚举 enum
enum Gender{
    Male,
    Female
}
let i:{name:string,gender:Gender}
i = {name:'李四',gender:Gender.Male}

类型别名

typescript
type myType = string
let m:myType;
m = 'hi'

type myType = 1 | 2 | 3 | 4
let m:myType;
m = 2