2015-06-20 65 views
5

我在項目中使用ES6和Flow類型檢查器。帶有流式註釋的Mixins

假設我有兩個type aliases,只有在什麼期望他們的方法(如Java接口)來定義:

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

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

我將如何定義一個類FlyingCar展示給類型檢查它是一個Car和一個Airplane?我正在使用ECMAScript 6類。

對於一個類型,我懷疑它會看起來像:

type FlyingCar = (Airplane & Car); 

我似乎無法調和什麼,我想the class syntax,雖然,因爲它似乎是綁成ES6的類語法。

回答

5

你不必證明它流動。 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());