Typescript 类型“{….}”不可分配给类型“T”
我基于我的接口创建了此类型:Typescript 类型“{….}”不可分配给类型“T”,typescript,types,Typescript,Types,我基于我的接口创建了此类型: interface Base { prop1: any; } interface A extends Base { propA: string; } interface B extends Base { propB: string; } 以及一个假定返回我的任何接口类型的函数 public getObject<T extends Base>(id): T { return { prop1: id, //prop
interface Base {
prop1: any;
}
interface A extends Base {
propA: string;
}
interface B extends Base {
propB: string;
}
以及一个假定返回我的任何接口类型的函数
public getObject<T extends Base>(id): T {
return {
prop1: id, //prop on Base type
propA: '2'//prop on type A
}
}
但这意味着如果我添加更多扩展Base的接口,我必须将每个新接口类型添加到getObjectid:A | B |。。。。return很奇怪看看下面的例子,我想你想要实现,你可以有一个被其他类扩展的基类,你有一个函数,它根据一些条件返回多个扩展类中的一个
interface BaseClass {
name?: string;
}
interface Class1 extends BaseClass {
age: string;
}
interface Class2 extends BaseClass {
address: string;
}
function getBase<T>(name: string): T {
return {
name,
age: '32',
address: 'Himalaya'
} as unknown as T;
}
console.log(getBase<Class1>('Ricky').name);
console.log(getBase<Class1>('Ricky').age);
console.log(getBase<Class2>('Ricky').name);
console.log(getBase<Class2>('Ricky').address);
看看你的例子,我想你想实现下面的情况,你可以有一个基类,它被其他类扩展,你有一个函数,它根据一些条件返回多个扩展类中的一个
interface BaseClass {
name?: string;
}
interface Class1 extends BaseClass {
age: string;
}
interface Class2 extends BaseClass {
address: string;
}
function getBase<T>(name: string): T {
return {
name,
age: '32',
address: 'Himalaya'
} as unknown as T;
}
console.log(getBase<Class1>('Ricky').name);
console.log(getBase<Class1>('Ricky').age);
console.log(getBase<Class2>('Ricky').name);
console.log(getBase<Class2>('Ricky').address);
您不能扩展应该使用的接口implements@RICKYKUMAR如果我更改extends to implements时出错,找不到名称“implements”,是否可以添加完整的code@RICKYKUMAR刚刚用完整接口defsProblem更新的是将特定类型分配给一般泛型类型T{prop1:any;propA:string;}'不可分配给类型T,因为T也可以是基的另一个子类型。请参阅:您不能扩展应使用的接口implements@RICKYKUMAR如果我更改extends to implements时出错,找不到名称“implements”,是否可以添加完整的code@RICKYKUMAR刚刚用完整接口defsProblem更新的是一个特定类型t的赋值o一般泛型类型T。如错误消息所述,“{prop1:any;propA:string;}”不可分配给类型T,因为T也可以是基的另一个子类型。请参阅:问题是我没有使用类,我确实使用interfacesupdated用于接口问题是我没有使用类,我确实使用interfacesupdated用于接口