2015-06-20 26 views
5

Tôi đang sử dụng ES6 và trình kiểm tra loại Flow trong một dự án.Kết hợp với chú thích loại luồng

Giả sử tôi đã có hai type aliases, được xác định duy nhất về những gì các phương pháp được kỳ vọng của họ (như một giao diện Java):

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

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

Làm thế nào tôi có thể định nghĩa một lớp FlyingCar để chứng minh cho người kiểm tra loại rằng đó là cả số Car và một số Airplane? Tôi đang sử dụng các lớp ECMAScript 6.

Đối với một loại tôi nghi ngờ nó sẽ giống như thế:

type FlyingCar = (Airplane & Car); 

tôi dường như không thể dung hòa những gì tôi muốn với the class syntax, tuy nhiên, vì nó dường như được gắn vào cú pháp lớp ES6 của.

Trả lời

5

Bạn không cần phải chứng minh nó chảy. Flow thực hiện hệ thống kiểu cấu trúc, vì vậy bạn chỉ cần thực hiện cả hai loại trong lớp của bạn.

này không gõ kiểm tra:

class FlyingCar {} 

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

} 

flyInACar(new FlyingCar()); 

này không:

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


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

} 

flyInACar(new FlyingCar()); 
Các vấn đề liên quan