gpt4 book ai didi

javascript - 映射根据 Typescript 中的键类型设置不同类型的值

转载 作者:行者123 更新时间:2023-12-05 05:39:40 25 4
gpt4 key购买 nike

我想用Map来实现一个Trie,所以我创建了一个TrieNodeMap类型。 TrieNodeMap 有两种类型的键:单个字母或表示单词结尾的“$”。带字母的键映射内部 TrieNodeMap,'$' 映射单词的信息对象。

这是我写的:

type Char = 'a' | 'b' | 'c' | 'd' // just name a few chars;
type TrieNodeMap = Map<Char, TrieNodeMap> | Map<'$', object>;

但是,当我尝试使用它时,编辑器显示围绕 'a' as Char 的错误:“TS2345:'string' 类型的参数不可分配给 'never' 类型的参数”

let node: TrieNodeMap = new Map();
node.set('a' as Char, new Map());

我是不是做错了什么,为什么TrieNodeMap的key好像是never类型?

最佳答案

为此,您需要重载您的 Map。换句话说,您需要使用交集 & 而不是 union |

type Char = 'a' | 'b' | 'c' | 'd' // just name a few chars;
type TrieNodeMap = Map<Char, TrieNodeMap> & Map<'$', object>;

let node: TrieNodeMap = new Map();
node.set('a', new Map());

const trie = node.get('b') // TrieNodeMap | undefined
const obj = node.get('$') // object | undefined

Playground

关于javascript - 映射根据 Typescript 中的键类型设置不同类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72632002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com