首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Typescript Map<enum,set<enum>>“没有重载匹配此调用”,但我不明白为什么?

Typescript Map<enum, set<enum>>"没有重载匹配此调用"是由于Typescript在调用Map构造函数时,没有找到匹配给定参数的重载。

在Typescript中,Map是一种键值对的集合,它允许我们使用任意类型的值作为键和值。Map的构造函数有多个重载形式,可以接受不同类型的参数,但是在给定的参数类型为Map<enum, Set<enum>>时,Typescript没有找到匹配的重载。

要解决这个问题,可以考虑以下几点:

  1. 确保所使用的enum类型是正确的,并且已经定义和导入到当前的文件中。如果没有正确导入enum类型,Typescript会报错。
  2. 确保Map和Set类型的定义是正确的,并且已经正确导入到当前的文件中。如果没有正确导入Map和Set类型的定义,Typescript会报错。
  3. 确认给定参数是否符合Map构造函数的重载形式。Map构造函数的重载形式可以接受多种参数类型,例如:Iterable<[enum, Set<enum>]>、null、undefined等。确保给定参数符合构造函数所期望的类型。

以下是一个例子,演示了如何使用Typescript的Map和Set类型:

代码语言:txt
复制
// 导入enum类型
import { MyEnum } from "./enums";

// 创建一个Map<enum, Set<enum>>类型的变量
const myMap: Map<MyEnum, Set<MyEnum>> = new Map();

// 创建一个Set<enum>类型的变量
const mySet: Set<MyEnum> = new Set();

// 向Set添加元素
mySet.add(MyEnum.Value1);
mySet.add(MyEnum.Value2);

// 向Map添加键值对
myMap.set(MyEnum.Key1, mySet);

// 使用Map和Set
const setFromMap = myMap.get(MyEnum.Key1);
if (setFromMap) {
  setFromMap.forEach((value) => {
    console.log(value);
  });
}

在上面的例子中,我们首先导入了一个名为MyEnum的enum类型,并创建了一个myMap变量,类型为Map<MyEnum, Set<MyEnum>>。然后,我们创建了一个mySet变量,类型为Set<MyEnum>,并向其中添加了两个元素。接下来,我们使用myMap.set()方法将mySet作为值与MyEnum.Key1作为键添加到了myMap中。最后,我们使用myMap.get()方法获取到MyEnum.Key1对应的值,并对其中的每个元素进行遍历。

请注意,以上示例仅用于演示Map和Set的基本用法,并不涉及具体的云计算领域。对于云计算中的具体应用场景和相关腾讯云产品的介绍,请参考腾讯云的官方文档和产品介绍页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

了不起的 TypeScript 入门教程

要解决前面遇到的问题,方法就是为同一个函数提供多个函数类型定义来进行函数重载,编译器会根据这个列表去处理函数的调用。...在 TypeScript 中除了可以重载普通函数之外,我们还可以重载类中的成员方法。...方法重载是指在同一个类中方法同名,参数不同(参数类型不同、参数个数不同或参数个数相同时参数的先后顺序不同),调用时根据实参的形式,选择与它匹配的方法执行操作的一种技术。...如果匹配的话就使用这个。 因此,在定义重载的时候,一定要把最精确的定义放在最前面。.../* Source Map Options */ "sourceRoot": "./", // 指定调试器应该找到 TypeScript 文件而不是源文件的位置

7K52

TypeScript 4.3 beta 版本正式发布:新增import语句补全,对模板字符串类型进行改进

#size = num; } } 在上面的示例中,我们的 set 访问器采用了更广泛的类型集(string、boolean 和 number),但我们的 get 访问器始终保证它是一个 number。...现在代码只是添加了这两个毫无用途的 show 和 hide 方法,它们可能根本不会被调用。...这里的问题有一部分是用户没有明确他们是要添加一个新方法还是要覆盖一个现有方法,这就是 TypeScript 4.3 添加 override 关键字的原因所在。...现在,TypeScript 确实可以证明模板字符串的每个部分是否可以成功匹配。你现在可以混合使用不同的替换字符串来匹配模板字符串,TypeScript 可以很好地搞清楚它们是否真的兼容。...的成员被自动填充或平凡编写时,它们会被视为联合 enum,在这种情况下,一个 enum 可以重新调用它可能表示的每个值。

1.1K40
  • 1.8W字|了不起的 TypeScript 入门教程(第二版)

    为什么接口 X 和接口 Y 混入后,成员 c 的类型会变成 never 呢?...在 TypeScript 中除了可以重载普通函数之外,我们还可以重载类中的成员方法。...方法重载是指在同一个类中方法同名,参数不同(参数类型不同、参数个数不同或参数个数相同时参数的先后顺序不同),调用时根据实参的形式,选择与它匹配的方法执行操作的一种技术。...如果匹配的话就使用这个。 因此,在定义重载的时候,一定要把最精确的定义放在最前面。...12.1 泛型语法 对于刚接触 TypeScript 泛型的读者来说,首次看到 语法会感到陌生。其实它没有什么特别,就像传递参数一样,我们传递了我们想要用于特定函数调用的类型。 ?

    10.2K51

    TypeScript基础常用知识点总结

    Map 是 ES6 中引入的一种新的数据结构,可以参考 ES6 MapSet。...创建 Map对象并对其进行操作 TypeScript 使用 Map 类型和 new 关键字来创建 Map: //创建 Map对象 let myMap = new Map(); // 设置 Map 对象用...TypeScript—函数 用function来定义函数 function sum(x, y) { return x + y; } 函数重载 重载是方法名字相同,而参数不同,返回类型可以相同也可以不同...当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问联合类型的所有类型中共有的属性或方法: interface Cat { name: string;...---- 掌握了 TypeScript 的这些语法就像学会了砌墙的工艺,但我们学习 TypeScript 的目的不是为了造一间“小茅屋”,而是为了造“高楼大厦”,这也正是 TypeScript 的类型系统带来的优势

    4.8K30

    精读《Typescript2.0 - 2.9》

    造成这个现象的原因是,Typescript 知识的积累需要 刻意练习,使用 Typescript 的时间与对它的了解程度几乎没有关系。...解决明确不会报错的情况,比如配置文件是静态的,那肯定不会抛出异常,但在 2.0 之前的版本,我们可能要这么调用对象: const config = { port: 8000 }; if (config...Enum 类型支持字符串 从 Typescript 2.4 开始,支持了枚举类型使用字符串做为 value: enum Colors { Red = "RED", Green = "GREEN"..., Blue = "BLUE" } 笔者在这提醒一句,这个功能在纯前端代码内可能没有用。...但我们可能并不习惯一步步学习新语法,因为新语法需要时间消化、同时要连接到以往语法的上下文才能更好理解,所以本文从功能角度,而非版本角度梳理了 TS 的新特性,比较符合学习习惯。

    1K20

    TypeScript超详细入门教程(上)

    这也是为什么造世主给我起名TypeScript。...就拿一个函数重载来说吧,在别的这些语言里,你可以定义多个同名函数,然后不同点在于参数个数、参数类型和函数体等,你可以给同一个函数传入不同参数,编译器就会知道你要调用的是哪个函数体;而我,也是有函数重载的概念的...下面让 Lison 向你客观地介绍下,我的发展趋势以及你为什么要与我为伴。 相信你在听完 TypeScript 的自我介绍之后,它的亮点你已经了解一二了。...但我还是想给你讲讲如何自学TypeScript,在授你以鱼之前也会授你以渔的,这样TypeScript即使更新了,你也能毫无压力地迎接它的新特性。好,接下来让我们开始吧。...我们还学习了Symbol的两个静态方法:Symbol.for和Symbol.keyFor,Symbol.for调用时传入一个字符串,使用方式创建symbol值时会先在全局范围搜索是否有用字符串注册的

    4.2K41

    TypeScript在项目开发中的应用实践体会

    以及Typescript是否可以解决当前项目生产的困境。 如果对于为什么使用TypeScript产生疑惑,那么可以移步你为什么不使用 TypeScript?,它是一个非常棒的讨论话题。...T : T extends Map ?...函数重载 函数重载是一个非常常用的特性,它大多数用于多态函数。大多数同学可能都不怎么使用。但是它能够定义不同的参数类型。需要有多个重载签名和一个实现签名。...在实例中当我们调用.name的时候,其实本身就是调用了其get的方式,而设置值时,则是调用set方法, 需要注意的是,._name值也输出了,但是TypeScript会进行提示你....TypeScript不会防止屎山的出现,也没有大多数人传言中的那么香。只是很多吹捧的人会把屎山说香。

    2.9K60

    深入类型系统_TypeScript笔记8

    Elephant(), new Snake()]; 上下文推断 与赋值推断相比,上下文推断是另一种不同的思路: 推断 值 ------> 变量类型 查找 匹配...所以TypeScript没有强制约束函数类型逆变,而是允许双变。...,目标类型缺少相应的可选参数也是合法的 对于剩余参数,就当成是无限多个可选参数,也不要求严格匹配。...对于存在多个重载的函数,要求源函数的每个重载版本在目标函数上都有对应的版本,以保证目标函数可以在所有源函数可调用的地方调用,例如: interface sum { (a: number, b: number...,所以目标函数至少要兼容这两个版本 四.枚举 首先,来自不同枚举类型的枚举值不兼容,例如: enum Status { Ready, Waiting }; enum Color { Red, Blue,

    98840

    一个52000+行代码文件给我的启示

    C#、TypeScript 之父!全世界最顶尖的程序员之一》。...left 和 right 为什么 TS 需要 named parameter 特性: 在 TS 这种高频调用场景里通过解构 options 对象的方式传参会导致大量无谓的内存开销 —— 这通常会导致...: 但目前社区对于 const enum 的主流意见是 不推荐使用,而且 ts 的部分维护者也认为这个是 mistake: 但是这说法其实相当尴尬:是的虽然这是 mistake 我们不推荐使用,但我们...从语言特性的层面来说,TS 真的缺一个满血版模式匹配 + enum adt 了,但目前 TS 原则上是不会再合入新的 runtime 特性了 —— 这就很难受了,又不能表驱动,又不能模式匹配,最后代码很...+ 模式匹配,因为这属于 runtime 特性,不是简单擦掉类型就能搞定的) 当然,近期 tc39 虽然也提了不少新东西但是没有静态类型系统就显得这些特性相当鸡肋以至于它们看起来就像是 ts39 一样

    247.3K10

    TypeScript一些知识点

    为什么相如 boolean 这种原始数据类型也能赋值给 Object 呢?因为原始类型会自动拆箱和装箱啊。...在上述例子中,如果没有函数重载,只看函数实现则可以出现x是nunber,y是string这种情况,但是函数重载限制了这种情况。需要注意的是函数实现必须兼容所有的重载语句。...函数重载解析顺序 当一个函数的实际参数数量不少于函数重载中的必须参数且不多于重载函数中定义的所以参数数量,同时实际参数的类型能够匹配函数重载中的参数,则认为这条函数重载符合函数定义,如果有多条符合的则从上到下解析...) { return 0; } else { return '1'; } } const a: 0 = f('h1'); // 报错a的类型应该是string 上述第一条函数重载和第二条函数重载都满足函数调用的参数..._d; } set d(value) { // setter this.

    10710

    TS 进阶 - 类型基础

    如果没有声明枚举的值,它会默认使用数字枚举,且默认值从 0 开始: enum Items { A, B, C, } console.log(Items.A); // 0 console.log...TypeScript 中可以同时使用字符串枚举值和数字枚举值: enum Mixed { Num = 1, Str = 'str', } 枚举和对象的重要差异在于,对象是单向映射的,只能从键映射到键值...# void 类型 在 TypeScript 中,一个没有返回值(即没有调用 return 语句)的函数,其返回值类型应该被标记为 void 而不是 undefined,尽管它的实际值就是 undefined...要实现与入参关联的返回值类型,可以使用 TypeScript 提供的函数重载签名: function func(foo: number, bar: true): string; function func...拥有多个重载声明的函数在被调用时,是按照重载的声明顺序往下查找的。 TypeScript 中的重载更像伪重载,只有一个具体的实现,其重载体现在方法调用的签名上而不是具体实现细节上。

    1.8K50

    以淘宝店铺为例,谈谈 TypeScript ESLint 规则集考量

    await-thenable 只允许对异步函数、Promise、PromiseLike 使用 await 调用 为什么:避免无意义的 await 调用。...:没有父类型的空接口实际上就等于 {},虽然我不确定你使用它是为了什么,但我能告诉你这是不对的。...:对于普通变量来说,与实际赋值一致的类型标注确实是没有意义的,TypeScript 的控制流分析能很好地做到这一点,而对于函数参数与类属性,主要是为了确保一致性,即函数的所有参数(包括重载的各个声明)、...为什么:抛出的 Error 实例能够自动的收集调用栈信息,同时借助 proposal-error-cause[3] 提案还能够跨越调用栈来附加错误原因传递上下文信息,不过,真的会有人直接抛出一个字符串吗...promise-function-async 返回 Promise 的函数必须被标记为 async,规则能够确保函数的调用方只需要处理 try/catch 或者 rejected promise 的情况

    2.7K30

    (51) 剖析EnumSet 计算机程序的思维逻辑

    之前介绍的Set接口的实现类HashSet/TreeSet,它们内部都是用对应的HashMap/TreeMap实现的,但EnumSet不是,它的实现与EnumMap没有任何关系,而是用极为精简和高效的位向量实现的...> EnumSet copyOf(Collection c) 可以看到,EnumSet有很多重载形式的of方法,最后一个接受的的是可变参数,其他重载方法看上去是多余的,之所以有其他重载方法是因为可变参数的运行效率低一些...1:count+1); } } Set days = EnumSet.noneOf(Day.class); for(Map.Entry entry : countMap.entrySet...EnumSet自身没有记录元素个数的变量,也没有位向量,它们是子类维护的。...其他工厂方法基本都是先调用noneOf构造一个空的集合,然后再调用添加方法,我们来看添加方法。

    78470

    Typescript真香秘笈

    之前我其实对于typescript没有太多好感,主要是认为其学习成本比较高,写起代码来还要多写很多类型声明,并且会受到静态类型检查的限制,很不自由,与javascript的设计哲学♂相悖。...但是反过来,用typescript语法编写的代码,却不能在浏览器或者Node环境下直接运行,因为typescript本身并不是Ecmascript标准语法。 3. 为什么要使用Typescript?...人的专注力很难一直都保持高度在线状态,如果没有类型检查,很容易出现一些低级错误。例如给某个string变量赋值数值,或给对象赋值时候缺少了某些必要字段,调用函数时漏传或者错传参数等。...所以我们将类型确定的任务留给了调用者。...", // 生成source-map entry: ".

    5.6K20
    领券