类型别名
下面的代码将string类型赋值给一个别名,以后如果出现别名的地方,就好比出现类型string,同理其他类型也一样
 type Name=string
 let gender:Name='男'
接口
接口定义一些规范,实现该接口必须要实现该接口定义的规范
一个class可以实现多个接口,但是一个class只能继承一个类
interface INamed{
    name:string
    // 注意没有方法体,在具体的对象中实现方法体
    print():void
}
const sayName=(o:INamed)=>{
    o.print()
}
const person={
    age:27,
    name:'jack',
    print:function(){
        console.log(this.name)
    }
}
sayName(person)
一个类可以实现一个或者多个接口,前提是必须实现接口中的每一个属性和方法,但是类中也可以有自己的属性和方法
 interface Person{
     name:string
     greeting():void
 }
//  类实现接口,一个接口可以供多个类实现
 class Employee implements Person{
    name:string='Jack';
    greeting():void {
        console.log('我是一个employee')
    };
 }
 let em:Employee=new Employee()
 em.greeting()
可选属性:
表示一个属性或者方法是可有可无,在属性名后面加个?
interface Person{
    first_name:string
    last_name?:string
		print?():void
}
let p={
    first_name:'Tome',
    last_name:'Jack'
}
const sayName=(o:Person)=>{
    console.log(o.first_name)
}
sayName(p)
tip: