代码之家  ›  专栏  ›  技术社区  ›  DauleDK

如何使用object.fromEntries将js-Map转换为typescript中的对象

  •  0
  • DauleDK  · 技术社区  · 5 年前

    我的目标是使用以下命令将javascript Map转换为对象 Object.fromEntries() ts-playground-link

    我在打字游戏中的代码看起来像这样:

    interface Car { 
        engine: string;
        color: string;
        price: number;
    }
    
    const carMap = new Map<keyof Car, any>();
    carMap.set('engine', 200);
    
    const carMapAsObject = Object.fromEntries(carMap);
    console.log(carMapAsObject); // --> {engine: 200}
    

    Object.fromEntries(carMap); 在打字游戏中不起作用,在这里它会给出错误: Property 'fromEntries' does not exist on type 'ObjectConstructor'.(2339) .

    在我的本地机器上,我得到的错误不同(错误2345):

    Argument of type 'Map<"engine" | "color" | "price", any>' is not assignable to parameter of type '[string, unknown][]'.
      Type 'Map<"engine" | "color" | "price", any>' is missing the following properties from type '[string, unknown][]': length, pop, push, concat, and 24 more.ts(2345)
    

    这还不被typescript支持吗,或者我应该如何进行对象转换?查看控制台时,我可以看出底层javascript执行得很好

    0 回复  |  直到 5 年前