1. 接口与类型别名的对比
- 相同点: 都可以给对象指定类型
- 不同点
- 接口,只能为对象指定类型, 还可以通过extends继承其他类型
- 类型别名,不仅可以定义对象类型,还可以为任意类型指定别名
interface Person {
name: string
age: number
}
interface Son extends Person {
eat: string
say: () => void
}
type Persons = {
name: string
age: number
}
type NumStr = number | string
2. 类型断言
- 有的时候要不TS更加明确一个值的类型,此时可以使用
类型断言
来指定更具体的类型。 - 比如: 在获取dom对象的方法的时候,类型推论的类型,不太严谨。 这个时候就需要
使用类型断言来指定更加具体的类型
const aLink = doucument.getElementById('link') as HTMLAnchorElement
1. 使用as关键字实现类型断言
2. 关键字as后面的类型是一个更加具体的类型(HTMLAnchorElement 是 HTMLElementd 的子类型)
3. class类之 implements
- 类继承的两种方式 extends (继承父类), implements (实现接口)
interface Singble {
sing(): void
}
class Person implements Singble {
sing() {
console.log('this is a implements')
}
}
- 通过
implements
关键字让class 实现接口 - Person类实现接口Singble意味,Person 类中必须提供Singble接口中定义的所有方法和属性。
4. 泛型