ts extends T
时间: 2024-09-09 12:15:30 浏览: 49
在TypeScript(TS)中,`extends` 关键字用于类型约束,它允许你在定义新的类型时指定该类型应从已存在的类型派生出来。有两个例子可以帮助理解:
1. **泛型约束**[^1]:
```typescript
function getCnames<T extends { name: string }>(entities: T[]): string[] {
return entities.map(entity => entity.cname);
}
```
这里,`<T extends { name: string }>` 是一个类型约束,表示参数 `T` 必须是一个具有 `name` 属性为字符串的对象。
2. **条件类型(Conditional Types)**[^2]:
```typescript
type P<T> = T extends 'x' ? string : number;
type Y2 = P<'x' | 'y'>; // "string" | "number"
```
在这个例子中,`P` 是一个条件类型,如果 `T` 类型等于 `'x'`,那么 `P<T>` 的结果就是 `string`;否则,它是 `number`。当 `Y2` 被赋值给 `'x' | 'y'` 时,会返回这两种类型的联合。
总结来说,`extends` 可以用来限制类型以保证程序的类型安全性和一致性。在泛型中,它帮助我们在函数签名中明确接收的参数类型;而在条件类型中,它可以实现更复杂的基于输入类型的动态类型变换。
阅读全文