在 javascript ES06 中创建通用类和函数

Rah*_*ogi 3 javascript ecmascript-6

我来自java背景。我通过以下方式在 java 中使用泛型:

  class ApiResponse<T> {

    T data;

    T getData(){
      return T;
    }
  }
Run Code Online (Sandbox Code Playgroud)

我无法在 javascript ES06 中使用泛型。我想知道是否可以创建泛型类?

Ami*_*mit 7

JavaScript 是一种动态类型语言,它没有任何泛型。您可以编写一个普通的函数/方法,它适用于所有类型。

PS 如果想像在 Java 中一样进行编码,请使用 Typescript。


And*_*rey 7

你觉得这个怎么样,埃隆·马斯克?纯js,无typeflow/typescript

class BaseClass {
    hello = function () {
        console.log('hello!');
    }
}

function GenericClass(T, Base) {
    return class extends Base {
        field = new T();
    }
}

class DerivedFromGeneric extends GenericClass(String, BaseClass) {
    greet = function() {
        this.hello();
        console.log('greetings ', this.field);
    }
}

let i = new DerivedFromGeneric();
Run Code Online (Sandbox Code Playgroud)


Rah*_*ogi 5

Javascript 本身不提供任何语法来支持泛型类。但可以使用:

流动

或者

打字稿

让我展示一个在 javascript ES06 中使用 Flow 来使用泛型类的示例:

export class ApiResponse<T> {

    data: ?T = null
}
Run Code Online (Sandbox Code Playgroud)