ts 之 函数参数双向协变
时间: 2023-07-12 13:35:06 浏览: 130
函数参数的传递
在 TypeScript 中,函数参数双向协变指的是函数参数类型在函数类型中既可以作为参数类型,也可以作为返回值类型。具体来说,如果一个函数类型中,参数类型是可赋值给传入参数类型,同时传入参数类型也是可赋值给参数类型,则称这种情况为参数双向协变。
例如,考虑下面这个示例:
```typescript
type Func = (arg: string) => number;
let f: Func = (arg: any) => 1;
```
在这个示例中,我们定义了一个函数类型 `Func`,它接受一个 `string` 类型的参数并返回一个 `number` 类型的值。然后,我们将一个函数赋值给 `f` 变量,该函数接受任意类型的参数并返回一个 `number` 类型的值。
这个赋值操作是合法的,因为在函数类型中,参数类型是可赋值给传入参数类型的(即 `string` 类型可以赋值给任意类型),同时传入参数类型也是可赋值给参数类型的(即任意类型可以赋值给 `string` 类型)。因此,函数参数双向协变是 TypeScript 中的一个重要特性,它允许我们更灵活地定义和使用函数类型。
阅读全文