Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 类型“{….}”不可分配给类型“T”_Typescript_Types - Fatal编程技术网

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用于接口