我定义了一个泛型方法,其泛型类型由其中一个参数确定:
myMethod<T>(param1: number, param2: T): T {
return param2;
}
现在,我想为参数设置一个默认值,然后 T 将由默认值的类型确定:
myMethod<T>(param1: number, param2: T = 'myDefaultString'): T {
return param2;
}
但这不会编译,因为它期望“字符串”匹配 T 而不是确定 T 是“字符串”。
一种解决方案是编写:
myMethod<T>(param1: number, param2: T = <any>'myDefaultString'): T {
return param2;
}
但是我需要在调用站点明确指定类型:
const val: string = this.myMethod<string>();
我考虑的另一个解决方案是编写第二个函数,没有默认参数:
myMethod<T>(param1: number, param2: T): T {
return param2;
}
myMethodDefault(param1: number): string {
return myMethod(param1, 'myDefaultString');
}
但后来我需要一个不同的名字,这让我很困扰。
有一个更好的方法吗?