TS3——【类】
原创
©著作权归作者所有:来自51CTO博客作者wx633288bd5c53e的原创作品,请联系作者获取转载授权,否则将追究法律责任
当前的文件为一个模块,它相当于有了作用域
export {}
ts中定义一个类,使用class关键字来完成
定义的类,它也可以当前一个类型来使用
ts中定义的类,它有类的修饰符
如果你定义的方法或属性没有指修饰符,则默认为public
public 公有的 定义的方法或属性在本类或子类或实例中都可以操作
protected 受保护的 定义的方法或属性只能在本类或子类中操作
private 私有的 定久的方法或属性只能在本类中操作
readonly 定义后,当前的属性它就为只读,不可修改
static 定义的属性为静态属性,定义的方法为静态方法,静态方法中不能使用this
访问器和修改器 getter/setter
标准写法
class Person {
// 定义属性
public name: string
// 属性进行初始化
constructor(name:) {
this.name = name
}
}
定义的类,它也可以当前一个类型来使用
class Person {
// 定义属性
public name: string
// 属性进行初始化
constructor(name:) {
this.name = name
}
}
let p:Person = new Person("niuniiu")
console.log(p.name);
=========简写
class Person{
constructor(public name:string){
}
}
let p1:Person = new Person("牛牛")
console.log(p1);
typescript属性的封装时,用到set方法和get方法时的错误提示:
Accessors are only available when targeting ECMAScript 5 and higher.
大概就是说:访问器仅在针对ECMAScript 5及更高版本时可用。
可以通过命令指定:
class Person{
constructor( public _name:string){}
get name(){
return this._name+"@@@"
}
set name(name:string){
this._name = name
}
}
let p1:Person = new Person("牛牛")
console.log(p1.name)
p1.name="niuniu";
console.log(p1.name)
类的封装性
class Person{
constructor(private _name:string){}
/* 类的封装性 */
private print(str:string){
console.log(str);
};
say(str:string){
this.print(str)
}
}
let p1:Person = new Person("牛牛")
console.log(p1.name)
p1.name="niuniu";
console.log(p1.name)
p1.say("不怕困难")