TypeScript泛型类构造函数如何正确设置默认参数
该问题属于重复问题,但原问题及配套代码过于复杂,不易理解。
在TypeScript中,我们可以正常定义带构造函数的泛型类,示例代码如下:
class Foo<T> { constructor(x: T) {} }
TypeScript 原生支持为函数设置默认参数,示例如下:
function Bar(x: string = 'baz'): void {}
注意:如果尝试直接拼接两个特性,在泛型类构造函数中直接为泛型类型参数设置默认值,以下写法无法通过编译:
// 错误写法,编译不通过 class Foo2<T> { constructor(x: T = 'baz') {} }
正确的实现逻辑是将构造函数参数类型声明为泛型与默认值类型的联合类型,即可同时兼容泛型传参、无传入参数时使用默认值两种场景,可正常编译的写法如下:
class Foo3<T> { constructor(x: T | string = 'baz') {} }
感谢 T.J. Crowder 在评论区提供的思路指引。
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

