2015-06-20 9 views
5

Sto utilizzando ES6 e il correttore di tipi Flow in un progetto.Miscele con annotazioni del tipo di flusso

Supponiamo che io ho due type aliases, definito solo in termini di quali metodi si aspetta da loro (come un'interfaccia Java):

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

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

Come faccio a definire una classe FlyingCar per dimostrare al tipo checker che sia sia un Car sia uno Airplane? Sto usando le classi ECMAScript 6.

Per un tipo ho il sospetto che sarebbe simile:

type FlyingCar = (Airplane & Car); 

Non riesco a conciliare quello che voglio con the class syntax, però, dal momento che sembra essere legato in sintassi di classe di ES6.

risposta

5

Non è necessario dimostrarlo per il flusso. Flow implementa un sistema di tipo strutturale, quindi è sufficiente implementare entrambi i tipi nella classe.

Questo non digita controllo:

class FlyingCar {} 

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

} 

flyInACar(new FlyingCar()); 

questo fa:

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


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

} 

flyInACar(new FlyingCar()); 
Problemi correlati