拆分字符串调用函数
function test(template,name,age){}
test`name is ${name},age is ${age}`
变量指定数据类型
let name:string ="aaa"; 如果默认值为字符串 则默认指定为string类型 后续赋值不为string的话会报错
:any 任意数据类型
:number
:boolean
:Person 指定为class 声明出来的类
方法指定数据类型
function test():void{ } 方法不需要返回值 如果return了 会报错 或者填写string这些
方法参数指定数据类型
function test(name:string,age=18){} 有默认值的参数要放在没有默认值参数后面
可选参数
function test(name:string="xu",age?:number){} 在变量名后面添加问号 可选参数要在必选参数之后
...操作符
function test(...arg){} 可以传入任意数量的参数
访问控制符
public 默认 类的内部外部都能访问 在constructor(public name){} 中 pubilc相当于声明的一个name属性 即this.name=name
private 私有的 只有类的内部可以访问
protected 受保护的 只有类和类的子类可以访问
构造函数
constructor 类中的特殊方法 只有在类被实例化的时候调用 只调用一次(个人理解为实例化时必须传入的参数)
泛型
let arr:Array<Person>=[ ]; 用来限制集合的内容 规定数组里只能放Person类的内容
接口
interface IPerson{ name:string ; age:number ; } 定义一个接口 声明属性
class Person{ constructor(){ public config:IPerson } }
let a = new Person( {name:'xu',age:18} ) 当接口用作于方法参数的类型声明,调用时传入对象 会检查参数是否满足接口声明的所有属性,不能多或者少
interface Person{ eat() }
class Child implements Person{ eat(){ } } 定义一个接口 在接口里声明方法 所有声明实现接口(implements)的类 必须实现接口中的方法