混合使用流类型注释

Mixins with Flow type annotations

本文关键字:类型 注释 混合      更新时间:2023-09-26

我在项目中使用 ES6 和 Flow 类型检查器。

假设我有两个类型别名,仅根据期望它们使用的方法(如 Java 接口)来定义:

type Airplane = {
    takeOff: (() => void);
    land: (() => void);
};
type Car = {
    drive: ((speed: number) => void);
};

我将如何定义一个类FlyingCar,以向类型检查器证明它既是Car又是Airplane?我正在使用 ECMAScript 6 类。

对于一种类型,我怀疑它看起来像这样:

type FlyingCar = (Airplane & Car);
但是,我似乎

无法将我想要的内容与类语法相协调,因为它似乎与 ES6 的类语法相关联。

您不必演示它即可流动。Flow 实现了结构类型系统,因此您只需要在类中实现这两种类型。

这不会键入检查:

class FlyingCar {}
function flyInACar(car: Airplane & Car): void {
}
flyInACar(new FlyingCar());

这确实:

class FlyingCar {
  takeOff(): void {}
  land(): void {}
  drive(speed: number): void {}
}

function flyInACar(car: Airplane & Car): void {
}
flyInACar(new FlyingCar());