Flow类类型(Class Types)
2018-01-25 本文已影响0人
vincent_z
类类型(Class Types)
Flow中的JavaScript类同时作为一个值和一个类型存在。你可以像使用Flow一样编写类,也可以使用类的名称作为类型。
class MyClass {
// ...
}
let myInstance: MyClass = new MyClass();
类语法(Class Syntax)
Flow中的类与普通的JavaScript类相同,只是增加了类型。
类方法
类方法与函数定义一样定义传入参与返回值的类型。
class MyClass {
method(value: string): number { /* ... */ }
}
类字段(属性)
Flow中使用类字段必须先注解。
// @flow
class MyClass {
method() {
// $ExpectError
this.prop = 42; // Error!
}
}
// @flow
class MyClass {
prop: number;
method() {
this.prop = 42; // Works!
}
}
Flow还支持使用类属性语法。
class MyClass {
prop = 42;
}
类泛型(Class Generics)
类也可以有自己的泛型。
class MyClass<A, B, C> {
property: A;
method(val: B): C {
// ...
}
}
类泛型被参数化。 当你使用类作为类型时,你需要为每个泛型传递参数。
// @flow
class MyClass<A, B, C> {
constructor(arg1: A, arg2: B, arg3: C) {
// ...
}
}
var val: MyClass<number, boolean, string> = new MyClass(1, true, 'three');