Javascript Typescript类组合泛型
我正在尝试在typescript中使用类组成Javascript Typescript类组合泛型,javascript,typescript,Javascript,Typescript,我正在尝试在typescript中使用类组成 const FoodMixin = superclass => class extends superclass { eat(food) { console.log(`Eating ${food}`); } }; class Animal<T> { prop: T; constructor(public name) { } } interface Prop {} class Dog extends
const FoodMixin = superclass => class extends superclass {
eat(food) {
console.log(`Eating ${food}`);
}
};
class Animal<T> {
prop: T;
constructor(public name) {
}
}
interface Prop {}
class Dog extends FoodMixin(Animal<Prop>) {
constructor(...args) {
super(...args)
}
}
应为1个参数,但得到2个
我怎样才能通过普通考试 将函数或构造函数用作值时,无法指定类型参数的问题 您可以显式指定类型参数(尽管这会导致静态方法丢失:
const FoodMixin = function <T extends new (...arsg: any[]) => any>(superclass: T) {
return class extends superclass {
eat(food: string) {
console.log(`Eating ${food}`);
}
};
}
class Animal<T> {
prop?: T ;
constructor(public name: string) {
}
breathe() : void{}
static mutate(): void{}
}
class Dog extends FoodMixin<new (name: string) => Animal<Prop>>(Animal) {
constructor(name: string) {
super("")
}
}
var dog = new Dog("");
dog.breathe();
dog.eat("");
dog.prop // is Prop
Dog.mutate // error
const FoodMixin = function <T extends new (...arsg: any[]) => any>(superclass: T) {
return class extends superclass {
eat(food: string) {
console.log(`Eating ${food}`);
}
};
}
class Animal<T> {
prop?: T ;
constructor(public name: string) {
}
breathe() : void{}
static mutate(): void{}
}
class Dog extends FoodMixin<new (name: string) => Animal<Prop>>(Animal) {
constructor(name: string) {
super("")
}
}
var dog = new Dog("");
dog.breathe();
dog.eat("");
dog.prop // is Prop
Dog.mutate // error
class Animal<T> {
prop?: T ;
constructor(public name: string) {
}
breathe() : void{}
static mutate(): void{}
}
class Dog extends FoodMixin(class extends Animal<Prop>{}) {
constructor(name: string) {
super("")
}
}
var dog = new Dog("");
dog.breathe();
dog.eat("");
dog.prop // is Prop
Dog.mutate // ok