感觉越来越难了呢,但是还是得继续学习,看看还有那些需要让我们记住的吧
TS中类与类的修饰符
- public (公有的 在类里面、子类、类外面都可以访问)
- protected (保护类型 在类里面、子类里面可以访问,类外部没法访问)
- private (私有的 在类里面可以访问, 子类、外部都没法访问)
- readonly (只读属性,不可修改)
不加修饰符默认 public
枚举
// enum Direction {
// Up = 10,
// Down,
// Left,
// Right
// }
// console.log(Direction.Up)
// console.log(Direction[0])
// enum Direction {
// //可以赋值
// Up = 'UP',
// Down = 'DOWN',
// Left = 'LEFT',
// Right = 'RIGHT'
// }v
//常量枚举
const enum Direction {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Right = 'RIGHT'
}
1.成员不初始化的话,默认是从0开始自增
2.数字型的枚举可以映射,字符串类型的枚举是不可以映射的
3.第一个成员初始化赋值为10的话,后面的成员从10开始增长
4.如果第n个成员初始化赋值为string类型,则n后面的成员要给初始值
5.常量枚举成员在编译阶段会被计算出结果,计算类枚举成员的值会被保留,只有到运行时才会被计算
Interface 接口
可以用来约束一个函数,对象,以及类的结构和类型
- 对对象的形状(shape)进行描述
- 对类(class)进行抽象
- Duck Typing
1.对象类型的接口
interface Person {
readonly id: number; //只读属性,只能在创建时赋值
name: string;
age: number;
sex?: string;// ? 可选属性
}
let user: Person = {
id: 0,
name: 'dayTimeAffect',
age: 0,
// sex: '男'
}
2.函数类型的接口
interface Fn {
(a: number, b: number): number;
}
let add: Fn = function(a: number, b: number): number {
return a + b
}
3.类类型的接口
interface Radio {
switchRadio(triggerL: boolean): void
}
interface Battery {
checkBatteryStatus(): number
}
interface RadioWithBattery extends Radio {
//接口也能继承
checkBatteryStatus(): number
}
class Car implements Radio {
switchRadio(){
//xxx
}
//不影响其他方法
otherInfo(){
//xxx
}
}
class Cell implements Radio, Battery {
switchRadio(){
//xxx
}
checkBatteryStatus(){
return 0
}
}
class Xxx implements RadioWithBattery{
switchRadio(){
//xxx
}
checkBatteryStatus(){
return 0
}
}