在javascript ES06中创建泛型类和函​​数

时间:2017-11-14 05:15:46

标签: javascript ecmascript-6

我来自java背景。我以下列方式在java中使用Generics:

  class ApiResponse<T> {

    T data;

    T getData(){
      return T;
    }
  }

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

5 个答案:

答案 0 :(得分:2)

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

P.S。如果想要像在Java中一样编写代码,请使用Typescript。

答案 1 :(得分:1)

埃隆·马斯克(Elon Musk),您觉得如何?纯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();

答案 2 :(得分:0)

Javascript没有严格的输入,因此不需要Generics,因为所有变量都可以随时分配给任何类型。

答案 3 :(得分:0)

您可以将Typescript用于此目的。

https://www.typescriptlang.org/docs/handbook/generics.html

答案 4 :(得分:0)

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

  

流量

  

打字稿

让我举一个在javascript ES06中使用Flow的泛型类的例子:

export class ApiResponse<T> {

    data: ?T = null
}