Typescript通用接口<t>扩展相同的名称

时间:2018-02-15 15:24:53

标签: typescript interface

这显然在C#中工作正常,但不是打字稿,有没有办法解决它还是我只需要使用不同的名字?

export interface IThing<T> extends IThing {
 Value: T;
}

export interface IThing {
Name?: string;
ValueStr?: string;
Type?: string;
}

我得到&#39;所有IThing声明都必须具有相同的类型参数&#39;

道歉,如果我是密集的!

2 个答案:

答案 0 :(得分:5)

您需要使用不同的名称,只有在识别接口时名称才重要,而不是通用类型参数的数量。

泛型在编译时在Typescript中被删除,因此无法区分泛型类的不同实例。 虽然接口只是一个编译时构造,并且可能已经通过名称和通用参数的数量进行区分,但我的猜测是,由于类以这种方式工作,因此决定使接口以相同的方式工作。

一种解决方法是使用接口的默认类型参数:

ff = new FontFamily("Terminal");

答案 1 :(得分:0)

修改2

我误解了这个问题,所以这不是一个正确的答案。我将这里留下来展示如何使用声明合并。

第一个声明的类型参数为T,而第二个声明没有。{n>只需确保它们都有类型参数。

export interface IThing<T> {
    Name?: string;
    ValueStr?: string;
    Type?: string;
}

修改

interface IThing<T> extends IThing

这不会起作用,正如我上面所说,只是确保两个接口声明具有相同的名称和相同的类型参数

interface IThing<T>

<强> Playground Demo