2015-06-20 4 views
5

Ich verwende ES6 und den Typ Checker Flow in einem Projekt.Mixins mit Anmerkungen zum Flow-Typ

Angenommen, ich habe zwei type aliases, definiert nur in Bezug auf welche Methoden von ihnen erwartet werden (wie eine Java-Schnittstelle):

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

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

Wie würde ich FlyingCar eine Klasse definieren, um die Typprüfer zu demonstrieren dass es ein Car und ein Airplane ist? Ich verwende ECMAScript 6-Klassen.

Für einen Typen vermute ich es so etwas wie aussehen würde:

type FlyingCar = (Airplane & Car); 

ich nicht zu versöhnen scheinen kann, was ich mit the class syntax will, obwohl, da es in ES6 Klasse Syntax gebunden zu sein scheint.

Antwort

5

Sie müssen nicht nachweisen, dass es fließt. Flow implementiert das Strukturtypsystem, sodass Sie einfach beide Typen in Ihre Klasse implementieren müssen.

Dies ist keine Typprüfung:

class FlyingCar {} 

function flyInACar(car: Airplane & Car): void { 

} 

flyInACar(new FlyingCar()); 

dies tut:

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


function flyInACar(car: Airplane & Car): void { 

} 

flyInACar(new FlyingCar());