我熟悉 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 和 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 那样强制要求显式的类到接口关系。