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');
上一篇下一篇

猜你喜欢

热点阅读