在打字稿中为Map接口创建对象

问题描述 投票:0回答:1

我熟悉 Java,现在也在学习 Javascript 和 Typescript。 这里通过使用“new”关键字我为Map接口创建对象(在java中我们通常不能为接口创建对象)。 我不明白,如果不实现基于 Typescript 的 Map 接口,代码是如何工作的?

test1.js(或test1.ts)

let map1= new Map()
map1.set(12,"User1");
map1.forEach((k,v) => console.log(k,v))

在Java中,我使用HashMap类实现Map接口,我能够创建HashMap类的对象。在java中,我不允许使用“new”关键字创建Map对象 - 下面是Java代码:

用户.java

public class User{
    public void createMap(){
        Map<Integer,String> map1= new HashMap();
        map1.put(12,"NameOne");
    }
}

谢谢!

typescript interface
1个回答
0
投票

在 TypeScript 和 JavaScript 中,您可以使用 new 关键字创建类或接口的对象,就像在 Java 中一样。然而,TypeScript 和 Java 处理类型检查的方式存在根本区别。 在你的 TypeScript 代码中:

let map1 = new Map();
map1.set(12, "User1");
map1.forEach((k, v) => console.log(k, v));

您确实正在创建 Map 类的对象。 TypeScript/JavaScript 中的 Map 类是一个内置类,它提供了一种创建和操作键值对的方法。 TypeScript 不需要您像 Java 那样显式实现接口。在 TypeScript 中,它更多地依赖于结构类型,其中一个对象根据其属性和方法被认为具有某种形状。 Map 类已经定义了在 TypeScript 中被视为“Map”所需的方法和属性。

相比之下,Java 是静态类型的,并且依赖于显式接口实现。要创建实现接口的类的对象,您需要使用实现类,如 HashMap 类所示。

因此,在 TypeScript 中,您不需要显式实现接口来创建 Map 对象,因为 Map 类已经满足被视为地图的结构要求。 TypeScript 允许您根据对象的形状和行为创建对象,而不是像 Java 那样强制要求显式的类到接口关系。

© www.soinside.com 2019 - 2024. All rights reserved.