6

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

假设我有两种类型 aliases,仅根据它们所期望的方法定义(如 Java 接口):

type Airplane = {
    takeOff: (() => void);
    land: (() => void);
};

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

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

对于我怀疑的类型,它看起来像:

type FlyingCar = (Airplane & Car);

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

4

1 回答 1

6

你不必证明它是流动的。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());
于 2016-01-21T01:55:36.763 回答