ts中的接口主要的做用是:数组
接口中可定义 肯定属性、可选属性、任意属性、只读属性函数
interface UserInfo { name: string; age: number; } const myInfo: UserInfo = { name: "haha", age: 20 };
接口中约束好的肯定属性,定义对象变量的时候 不能少spa
二、可选属性code
interface UserInfo { name: string; age: number; sex?:string } const myInfo: UserInfo = { name: "haha", age: 20 };
接口中的可选属性,是表示在对象变量中能够不存在对象
三、任意属性blog
interface UserInfo { name: string; age: number; sex?:string ; [propName: string]:any; } const myInfo: UserInfo = { name: "haha", age: 20, test1: 'lala', test2: 'ff', test3:123 };
注:一旦定义了任意属性,那么肯定属性和可选属性的类型都必须是任意属性类型的子类;继承
定义了任意属性后,对象变量中的属性个数才能够出现比接口的属性数量多的状况索引
四、只读属性接口
interface UserInfo { readonly id: number; name: string; age: number; sex?: string; [propName: string]: any; } const myInfo: UserInfo = { id: 1, name: "haha", age: 20, test1: "lala", test2: "ff", test3: 123 };
只读属性也是肯定属性,在对象变量定义的时候必须有值,此后不能修改string
对方法传入的参数以及返回值进行约束
interface Func { (param1: string, param2: number): boolean; } let myFunc: Func = function(param1, param2){ return typeof param1 === "string" && typeof param2 === "number"; }; myFunc("22222", 1111);
可对数组或对象进行约束
interface ArrIndex { [index:number]: string } interface Obj {
[index:string]:string
} let myArr: ArrIndex = ['first','second']
let myObj:Obj = {
name: 'kkkk'
}
对类进行约束,和抽象类有点类似