Appearance
Extends
TypeScript
中的 extends
关键字有多种用法:
- 扩展
interface
JavaScript
ES6 中class
的继承- 条件类型
扩展 interface
ts
interface BaseInfo {
name: string
}
interface Dog extends BaseInfo {
age: number
}
// Dog {
// name: string
// age: number
// }
class 的继承
ts
class Animal {
age: number
}
class Cat extends Animal {
run() {}
walk() {}
}
条件类型
LeftType extends RightType ? TrueBranch : FalseBranch
当 LeftType
能够赋值给 RightType
时,extends
表达式返回的类型为 TrueBranch
,否则为 FalseBranch
代码示例 1
ts
type First<T> = T extends [] ? [] : T[0]
通过 infer
关键字,我们可以更好地从 TrueBranch
中提取类型,而不是手动地获取类型
代码示例 2
ts
type Flatten<T> = T extends Array<infer Item> ? Item : T