Typescript 如何按字段扩展泛型类型?
我尝试使用泛型类型:Typescript 如何按字段扩展泛型类型?,typescript,Typescript,我尝试使用泛型类型: export abstract class Tree<T extends { children?: T[] }> { } 这是一种很好的方法吗?导出接口分支{ export interface Branch { name: string; children: Branch[] } export class Tree<T extends Branch> { constructor(public root: T) {} } export
export abstract class Tree<T extends { children?: T[] }> {
}
这是一种很好的方法吗?导出接口分支{
export interface Branch {
name: string;
children: Branch[]
}
export class Tree<T extends Branch> {
constructor(public root: T) {}
}
export class BranchImpl implements Branch {
children: BranchImpl[] = [];
constructor(public name: string) {}
}
const branch0 = new BranchImpl("root");
const branch1 = new BranchImpl("branch1");
branch0.children.push(branch1);
branch0.children.push(new BranchImpl("branch2"));
branch1.children.push(new BranchImpl("branch3"));
console.log(new Tree<BranchImpl>(branch0));
名称:字符串;
儿童:分支机构[]
}
导出类树{
构造函数(公共根:T){}
}
导出类BranchImpl实现分支{
儿童:BranchImpl[]=[];
构造函数(公共名称:字符串){}
}
const branch0=新的BranchImpl(“根”);
const branch1=新BranchImpl(“branch1”);
branch0.儿童.推送(branch1);
branch0.children.push(新BranchImpl(“branch2”));
branch1.children.push(新BranchImpl(“branch3”);
console.log(新树(branch0));
您可以使用接口分支定义树的子级,并使用类树包装根分支。我认为最好使用属性children创建一个类,然后声明T扩展了它。特雷索,像这样<代码>类MyChildrenClass{children:T[];}?然后如何使用它<代码>类TreeMap扩展了树{}而没有“类MyChildrenClass{childrenclass{children:T[];}”,这由您决定。我不知道孩子应该代表什么。number/string/any等。它不能是t,因为您正在使用子类定义t
export interface Branch {
name: string;
children: Branch[]
}
export class Tree<T extends Branch> {
constructor(public root: T) {}
}
export class BranchImpl implements Branch {
children: BranchImpl[] = [];
constructor(public name: string) {}
}
const branch0 = new BranchImpl("root");
const branch1 = new BranchImpl("branch1");
branch0.children.push(branch1);
branch0.children.push(new BranchImpl("branch2"));
branch1.children.push(new BranchImpl("branch3"));
console.log(new Tree<BranchImpl>(branch0));