在构造函数调用中使用泛型类型而不使用参数中的类型

时间:2017-04-14 15:58:43

标签: javascript generics flowtype

是否可以在构造函数调用中使用泛型而不使用类似参数中的类型,或者是否有其他方法可以执行此操作?

type PersonProps = {
  name: string,
}

class Model<P> {
  label: string;

  constructor(label: string) {
    this.label = label;
  }

  create(props: P): Promise<any> { ... }
}

const Person = new Model<PersonProps>('Person');

编辑:

我在Visual Studio代码中遇到以下流错误,根本没有自动完成结果:

test.js:11
11: const Person = new Model<PersonProps>('Person');
                    ^^^^^^^^^^^^^^^^^^^^^ boolean. This type cannot be compared to
11: const Person = new Model<PersonProps>('Person');
                                          ^^^^^^^^ string

test.js:11
11: const Person = new Model<PersonProps>('Person');
                              ^^^^^^^^^^^ PersonProps. type referenced from value position
  5: type PersonProps = {
          ^^^^^^^^^^^ type PersonProps

1 个答案:

答案 0 :(得分:1)

您不需要(实际上不能)在那里指定类型参数:

const Person = new Model('Person');

如果要为Person变量指定类型参数的完整类型,可以添加类型注释:

const Person: Model<PersonProps> = new Model('Person');

您看到的错误是由于<>字符解析为&#34;小于&#34;并且&#34;大于&#34;在那种情况下。