gpt4 book ai didi

Typescript 泛型接口(interface) 扩展同名

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:30 31 4
gpt4 key购买 nike

这在 C# 中显然可以正常工作,但在 typescript 中却不行,有没有办法解决它,还是我只需要使用不同的名称?

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

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

我得到“IThing 的所有声明必须具有相同的类型参数”

抱歉,如果我是密集的!

最佳答案

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

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

一种解决方法是为接口(interface)使用默认类型参数:

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

var d: IThing;
var foo: IThing<number>

关于Typescript 泛型接口(interface)<T> 扩展同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48810670/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com