这显然在C#中工作正常,但不是打字稿,有没有办法解决它还是我只需要使用不同的名字?
export interface IThing<T> extends IThing {
Value: T;
}
export interface IThing {
Name?: string;
ValueStr?: string;
Type?: string;
}
我得到&#39;所有IThing声明都必须具有相同的类型参数&#39;
道歉,如果我是密集的!
答案 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 强>