我想使用泛型为函数创建一个接口,以便该函数接受两个参数,并返回第一个参数的类型或两者的并集。我以为可以做这样的事情:
declare interface CustomMerge {
(x: Partial<T1>, y: Partial<T1 | T2>): T1 | T1 & T2;
}
但是我在这里遇到关于意外符号的各种错误,所以我怀疑到目前为止我所做的事情还差得很远。打字稿可以吗?
答案 0 :(得分:2)
您必须先声明type variables,然后才能在包括函数签名在内的任何地方使用它们。为此,您有两个选择:
在方法级别上声明
declare interface CustomMerge {
<T1, T2>(x: Partial<T1>, y: Partial<T1 | T2>): T1 | T1 & T2;
// ^^^^^^^^
}
在界面级别上声明
declare interface CustomMerge<T1, T2> {
// ^^^^^^^^
(x: Partial<T1>, y: Partial<T1 | T2>): T1 | T1 & T2;
}