声明指定数据类型的变量
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