如何初始化这个泛型类
Posted
技术标签:
【中文标题】如何初始化这个泛型类【英文标题】:How to initialize this generic class 【发布时间】:2020-03-15 00:06:11 【问题描述】:在这个类定义中,它的构造函数参数取决于它自己。那么应该如何正确初始化这个类呢?
export class TreeNode<T>
constructor(public value: T, public children: TreeNode<T>[])
toString(): string return `TreeNode($this.value)`;
(来源:https://github.com/angular/angular/blob/master/packages/router/src/utils/tree.ts)
【问题讨论】:
【参考方案1】:TypeScript 可以根据传递给构造函数的内容来推断类型,无论你给它什么值都将是被推断的泛型。
const node = new TreeNode(42, []); // TreeNode's T will be inferred to 'number'.
你也可以显式传递一个类型参数,虽然推断通常更可取。
const node = new TreeNode<string>('Hello World', []);
Example on the TypeScript playground
【讨论】:
【参考方案2】:你可以给它一个空列表,比如:
new TreeNode<Number>(0, [])
或者,如果你想让它有孩子,这样做:
new TreeNode<Number>(0, [
new Number(1, []),
new TreeNode<Number>(1, [])
])
【讨论】:
new Number 期望 0-1 个参数,但得到了 2 个。以上是关于如何初始化这个泛型类的主要内容,如果未能解决你的问题,请参考以下文章