如何在TypeScript中从地图的自定义键类型获取对象?

丹尼尔·斯蒂芬斯(Daniel Stephens)

我有一个自定义类,名为Foo

class Foo {
    constructor(public v: any) {
    }
}

我有一张地图,Foo我的钥匙在哪里

const map = new Map<Foo, string>();

AFAIK TypeScript没有比较重载。如何确保获取密钥正常工作?

const foo = new Foo(1234);
map.get(foo);

这是完整的代码:

class Foo {
    constructor(public v: any) {

    }
}

const map = new Map<Foo, string>();


const foo = new Foo(1234);
map.set(foo, "HELLO WORLD");

const foo2 = new Foo(1234);
console.log(map.get(foo2)); // DOESN'T work

console.log(map.get(foo)); // DOES work of course

你可以在这里找到我的问题:https://www.typescriptlang.org/play?#code/MYGwhgzhAEBiD29oG8BQ0PWPAdhALgE4Cuw+8hAFAA7EBGIAlsNAG4Bc0YOAngJQpU6TAF9UYodjz5oAWzDVoAXmg4ApgHdoAWQUAeBPAA00AoUY4A5gD5KfANxDUUgtABmiZas1xElAIwATADMACwOqPLUAHQQaviUHsbQAEQAEgCiADJZAPLQAOq5AEpZACIpEZK4rkmBXupahgEh4Y4u8CBq0SDwlpRR0ZbxiYiBfA7QAPRT0AAm8GoQOADkMhoUANZOHV09fQMKQyNJE-bTs2W5GQDK0BuE26hAA

尤里7os

您遇到的问题与TypeScript无关,而是JavaScript没有参照透明性。因此,这样的比较new Foo(123) === new Foo(123)总是虚假的。

JavaScript的Mapapi相当有限。如果要使用自定义比较功能(在这种情况下按值比较)查找特定条目,我建议使用.entries() methodMap元组数组的形式从中获取所有条目[key, value][]然后,您可以在其中找到要使用的任何条目Array.find()Map本身没有任何这样的方法。

但是,更好的方法是重新考虑您的数据结构。考虑到的局限性,Map最好将原始数据类型作为中的键Map由于我不知道您案件的具体情况,因此我只能提出一般建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为 Typescript 中的 Object.values 获取的数组键提供自定义类型?

如何在JDBC中的自定义Oracle类型中获取对象的名称

如何在TypeScript中迭代自定义文字类型?

如何在Typescript中打印自定义对象的属性?

如何在转到自定义类型中键入地图?

如何在Typescript中定义自定义类型以防止“无法分配给类型...”

Typescript如何在对象中键入自定义键

如何在Golang中使用与地图中的键相同的数据来区分两种自定义结构类型?

如何在 swift 中使用/引用自定义类型的字典中的键?

如何在地图迭代中获取特定的对象键

如何在Rust中定义自定义`Error`类型?

如何在 TypeScript 中定义带有动态键的对象类型?

如何在SwiftUI中设置自定义环境键?

如何在Laravel中查询自定义键?

如何在JSON中自定义编组映射键

如何在CodeMirror中添加自定义键映射?

如何在Wordpress中获取自定义帖子类型的最新帖子ID

如何在 Doctrine 自定义类型 convertToDatabaseValue 函数中获取列属性?

如何在WordPress中获取自定义评论类型的总评论数

如何在自定义属性指令中获取具有数字类型的输入的值

如何在Swift中获取值类型或自定义结构的内存地址?

如何在wordpress中获取所有自定义帖子类型?

如何在Typescript中获取地图中值的类型?

如何在Go中创建自定义类型元素的自定义类型数组?

如何在 React TS 中为对象(地图数据结构)中的每个项目呈现自定义元素?

如何在Woocommerce自定义模板中获取Checkout对象

如何在botpress自定义组件中获取json对象?

从自定义窗口中选择后如何在Shopify中获取集合对象

WooCommerce:如何在订单元数据对象中获取带有自定义 ID 的订单?