TypeScript
let age:number=18
:number是类型注解,只能赋值对应类型,其他都会报错
数组类型
object(数组、对象、函数等对象)
[] / Array<元素类型> 都可以创建数组
let numbers:number[]=[1,3,5]
let strings:Array<string>=['a','b','c']
联合类型
let arr:(number|string)[]=[1,'a','b','c',2,3,4,5]
(元素类型|元素类型)[]
类型别名
简化类型使用
type first=(number|string)[]
let a:first=[1,'f',3,5,1,3,0]
let b:first=[1,'h',3,4,9,4,0]
先用type+对新类型的命名=对象类型
可以对任意类型指定别名
对象类型
let person:{name:string,age:number,say_hi:void,greet(name:string):void}={
name:'Mr.Liu',
age:18,
say_hi(){}
}
{}描述对象结构 属性名:类型 方法名():返回值类型
方法有参数需在方法名后的小括号指定参数类型(如:greet(name:string):void)
一行代码中指定对象有多个属性类型时用;或,或换行分割
let person:{name:string,age:number,say_hi:()=>void,greet(name:string):void}={
name:'Mr.Liu',
age:18,
say_hi(){}
}
方法的类型也可以使用箭头函数的形式(如:{say_hi:()=>void})
可选属性
在属性名称后面加?
method?:string
函数类型
void类型
如果函数没有返回值,函数返回值的类型为void
可选参数
在可传可不传的参数后面加?(必选参数后面不加?)
可选参数只能出现在参数列表的最后,可选参数后面不能再出现必选参数
function myslice(start:number,end?:number):void{
console.log('起始索引:',start,'结束索引:',end);
}
myslice()
myslice(1)
原始类型
let 变量名:对象类型=变量
number
string
boolean
null(对空对象的引用)
undefined
symbol
接口 interface
声明接口后可以直接使用接口名称作为变量的类型
interface IP{
name:string
age:number
height:number
}
let person:IP={
name:'Jack',
age:20,
height:180
}
元组
确切知道包含多少个元素以及特定索引对应的类型
let position:[number,number]=[3,2]
只能两个元素
let position:[number,number,string]=[3,2,'hello']
三个元素且一一对应
类型推论
类型查询 typeof
可以获取前面已有变量值的类型简化类型书写(只能查询变量或属性的类型)
let haha={x:1,y:2}
function formatpoint(point:typeof haha){}
formatpoint({x:4,y:5})