1 接口的基本使用
什么是接口:接口也是一种数据类型,接口是一系列抽象方法的声明。是一些方法特殊的集合,
格式:interface interface_name{}
expor default{}
interface IFullname{
firstName:string
lastName:string
}
let goddassName:IFullName={
firstName:"王",
lastName:"五"
}
console.log(goddassName.firstName,goddassName.lastName);
function say({firstName,lastName}:IFullName):void{
console.log(`我的名字叫${firstName}${lastName}`)
}
say(goddassName);
// say({name:"杨幂"})
2 可选属性与只读属性
可选属性:?
只读属性:readonly
readonly与const的区别:作为变量的使用是const,属性使用是readonly
export default{}
//可选属性:
interface IFullName{
firstName:string
lastName:string
age?:number
}
let goddass:IFullName={
firstName:"王",
lastName:"五"
//age:18
}
//只读属性:
interface IFullName{
readonly name:string
readonle age:number
}
let info:IInfo={
name:"赵六",
age:18
}
//info.name="赵六",
//info.age = 18;
3 索引签名
定义:索引签名用于描述那些通过索引得到的类型
格式:如[props:string]:any
用于解决参数问题
export default {}
// 注意点:如果使用接口来限定了变量或者形参,那么在给变量或者形参默认值的时候,多一个或者少一个都是不可以的
//解决参数可多可少的问题//
// 方案一:使用可选参数
interface IFullName{
firstName:string
lastName: string
age ? : number
}
// 解决方案:可选属性
let goddass1:IFullName={firstName:"刘",lastName:"亦菲",age:18}
let goddass2:IFullName={firstName:"刘",lastName:"亦菲"}
//方案二:使用变量
let info={firstName:"杨",lastName:"幂", age:18,song:"爱的供养"};
let goddass3:IFullName=info;
//方案三:使用类型断言
let godass4:IFullName=({firstName:"杨",lastName:"幂" ,age:18,song:"爱的供养" ,tv:"仙剑奇侠传三"}) as IFullName;
//索引签名
// 索引签名用于描述通过索引得到的类型
// 注意点:对象中的键,会被转化为字符串
interface IBeauty{
[ props:string]: string
}
let goddass5={name1:"刘亦菲", name2: "刘诗诗" , name3: "赵丽颖"};
interface IAge{
[ props:string] : number
}
let ages={age1: 10,age2: 20,age3: 30}
interface IMyFullName{
firstName : string
lastName: string
[props :string]: string
}
let goddass6:IMyFullName={firstName: "刘",lastName:"亦菲" ,sex:"女"}
let goddass7: IMyFullName={firstName: "刘", lastName: "亦菲",tv:"甄嬛传"}