Flow类类型(Class Types)

类类型(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');
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。