类型“对象”不可分配给类型“ T”

时间:2018-09-07 16:02:12

标签: angular typescript

最近,我正在将项目从angular 2升级到angular6。偶然发现一些在先前版本中运行但在较新版本中未运行的服务代码

Char

获取以下错误:

  

类型'Object [Extract]'不能分配给类型'T [Extract]'。   类型“对象”不可分配给类型“ T”。   “对象”类型可分配给很少的其他类型。您是不是要改用“ any”类型

由于我是Angular和Typescript的新手,因此将不胜感激。预先感谢

1 个答案:

答案 0 :(得分:0)

正如评论中提到的那样-问题属于data类型,在您的示例中为Object。可能有两种情况:

1)如果dataT的类型相同

    protected static createResourceFromData<T>(
        myType: { new(): T; },
        data: T 
    ): T {
        var result =

2)当data对象键从T的键扩展时:

    protected static createResourceFromData<T>(
        myType: { new(): T; },
        data: { [key in Extract<keyof T, string>]: T[key]; } 
    ): T {
        var result = new myType();
        ...

通知,我已将type参数重命名为myType(您必须重命名并选择适当的名称),以避免与TS type混淆关键字。