使用简单类型注解只能满足最单一的场景,对于复杂的业务场景需要使用更多的类型注解方式。
1.联合类型
使用 |
let a : string | number;
a = 'aa';
a = 10;
let arr:<string | number>[] = [1,2,'aaa']
2 . 可选参数
对于包含很多属性的对象来说,我们可能只需要其中几个属性,对于可选参数使用?表示,对于多余参数使用[prop:string]:any
let obj:{name:string,age?:number,[prop:string]:any}
3.type类型别名
定义类型可以复用特定的类型注解
type Atype = 1 | 2| 3 | 4;
let a:Atype = 3;
type Person = {
name:string,
age:number
}
let p : Person = {name:'aa',age:20}
4.interface接口
接口应用于类型注解时,可以合并,能用interface时就不用type
interface Iname {
name :string,
age:number,
walk:()=>void
}
let n : Iname = {
name:'aaa',
age:20,
walk(){console.log(walk)}
}