最近,我正在将项目从angular 2升级到angular6。偶然发现一些在先前版本中运行但在较新版本中未运行的服务代码
Char
获取以下错误:
类型'Object [Extract]'不能分配给类型'T [Extract]'。 类型“对象”不可分配给类型“ T”。 “对象”类型可分配给很少的其他类型。您是不是要改用“ any”类型
由于我是Angular和Typescript的新手,因此将不胜感激。预先感谢
答案 0 :(得分:0)
正如评论中提到的那样-问题属于data
类型,在您的示例中为Object
。可能有两种情况:
1)如果data
与T
的类型相同
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
混淆关键字。