TypeScript:高级类型
class类型
class类型,和Java差不多。
class Person {
name: string;
age: number = 0;
}
let person = new Person();
构造函数
class Person {
name: string;
age: number = 0;
constructor(name: string, age: number){
this.name = name;
this.age = age;
}
}
let person = new Person('zhangsan',19);
类实现接口
interface Person{
sayHell(content: string): string;
}
class PersonImpl implements Person {
sayHell(content: string): string {
return content;
}
}
方法修饰符
TS也提供了如Java一样的方法修饰符:
- public
- protected
- privated
class PersonImpl implements Person {
public sayHell(content: string): string {
return content;
}
protected sayHell2(content: string): string {
return content;
}
private sayHell3(content: string): string {
return content;
}
}
readonly修饰属性
加了readonly属性,相当提供了get方法,没提供set方法
class Person {
readonly name: string;
//构造可以赋值
constructor(name: string) {
this.name = name;
}
}
let person = new Person('zhangsan');
//不能赋值
person.name = "John";
类型兼容性问题
类型兼容性,类型系统分为两种:结构型和标明型
标明型:两个没有任何关系的类,是不能进行兼容赋值的。比如说 A类 和 B类,A = B是会报错的;如Java,C++都属于标明型
结构型:两个没有任何关系的类,如果内部属性和方法完全一致(默认值可不用一致)或者说其中一个类完全兼容另一个类属性和方法,是可兼容赋值的。 A=B可成立
TS是结构型,我举个例子吧:
class Person1 {
name: string = "John2";
}
class Person2 {
name: string = "John";
age: number = 18;
}
let person1 = new Person1();
let person2 = new Person2();
person1 = person2;
可以这里理解,如果Person1有的,Person2也有并且还有Person1没有的,那Person2相当Person1的子类。
PS:interface和class都有这个结构型的特性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~