与js区别
- 参数必须加类型,如果函数有返回值,需要给函数加类型(返回值加),没有返回值加void
function add(x: number, y: number):number {
let z = x + y;
return z
}
- 可以规定参数可选可不选
//可选参数的使用
function showmsg(names: string, age?: number) {
console.log(names);
console.log(age);
}
showmsg("lily");
showmsg("tom", 19);
this的使用(ts语言的封装属于顶级封装)
- 类中的this对象指向的是类对象
- function定义的函数this指向调用function对象
- 箭头函数没有this
泛型
泛型用来创建可重用的组件,一个组件可以支持多种类型的数据;(any类型)
返回值的类型与传入参数的类型是相同的,使用了类型变量,它是一种特殊的变量,只用于表示类型而不是值用(T)表示
作用于接口类似
function identity<T>(arg: T): T { return arg; }
//调用
let output=identity<string>("mystring")
命名空间
“内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”
任何使用 module关键字来声明一个内部模块的地方都应该使用namespace关键字来替换
使用XML语言封装
namespace person {
export interface stu {
scoer: number
}
export class student {
names: string;
condes: number
constructor(n, c) {
this.names = n;
this.condes = c;
}
showmsg(res: stu) {
console.log("$s学生-%d学号的成绩:%d", this.names, this.condes, res);
}
}
}
var s1 = new person.student("lilyu", 1001)