1.接口
注释:接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。
interface LabelledValue {
label: string;
}
function printLabel(labelledObj: LabelledValue) {
console.log(labelledObj.label);
}
let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);
- 可选属性 ?
注释:接口里的属性不全都是必需的。 有些是只在某些条件下存在,或者根本不存在。 常规的接口定义没啥区别,只是多加了?号
interface SquareConfig {
color?: string;
width?: number;
}
//好处:
1.可以对可能存在的属性进行预定义
2.可以捕获引用了不存在的属性时的错误
- 只读属性 readonly
注释:通过赋值一个对象字面量来构造一个Point。 赋值后,x和y再也不能被改变了
interface Point {
readonly x: number;
readonly y: number;
}
let p1: Point = { x: 10, y: 20 };
p1.x = 5; // error!
2.类
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
- 继承
class Animal {
move(distanceInMeters: number = 0) {
console.log(`Animal moved ${distanceInMeters}m.`);
}
}
class Dog extends Animal {
bark() {
console.log('Woof! Woof!');
}
}
const dog = new Dog();
dog.bark();
3.函数
function add(x: number, y: number): number {
return x + y;
}