**class类中的属性有很多修饰符,有不同的约束**。
1. public:可以在任意位置修改和访问(默认)
1. private: 私有属性。在class内部可以访问,实例和继承的之类都无法访问
1. protected 只能在class内部和子类中使用
1. 通过get 和set 关键字设置读取写入的方法。 调用的时候直接调用get后面的名称而不是class私有的名称。
```
class Person{
private _name:string;
private _age:number;
constructor(name:string,age:number){
this._name = name
this._age = age
}
get name(){
return this._name
}
set name(value:string){
this._name = value
}
}
let person = new Person('zhangsan',18)
console.log(person.name)
```
**泛型**:在定义类或者函数的时候,如果类型不确定,就可以使用泛型。泛型在这里相当于一个变量。语法是用尖括号包裹起来。在的调用的时候再明确赋值类型。
```
// 函数的泛型
function fn<S>(str:S):S{
return str
}
// 调用的时候再指定具体的类型
fn<string>('abc')
// 泛型可以指定多个
function fn2<A,B>(a:A,b:B):A{
console.log(b)
return a
}
fn2<string,number>('123',5)
// 泛型和接口结合使用
interface MyLength {
length:number
}
function getLength<L extends MyLength>(a:L):number{
return a.length
}
getLength([2,3,4])
// 泛型在class中的使用
class Person3 <T>{
name:T;
constructor(name:T){
this.name = name
}
}
let person3 = new Person3<string>('zhangsan')
```
\
到这里所有ts的基础知识都已经介绍完毕,以后可以在自己的项目中去运用,一定可以彻底掌握typescript,增加自己的面试亮点!