gpt4 book ai didi

javascript - 目前是否有将两个或多个字符串文字类型连接到 TypeScript 中的单个字符串文字类型?

转载 作者:行者123 更新时间:2023-12-01 14:50:02 26 4
gpt4 key购买 nike

首先,让我明确一点,我正在寻找的不是联合类型,而是直接串联,即 "Hel" + "lo" = "Hello"但对于字符串文字类型

本质上,我有一个函数,它接受两个字符串文字,一个 namespacename , 并将它们与/结合起来作为它的输出,但我想不出一种方法来使输出成为字符串文字而不是通用字符串。

我需要它是字符串文字,因为输出将用作对象的键。

我试过类型交集(&),+ , .concat()

function makeKey<NS extends string, N extends string>(namespace: NS, name: N) {
return namespace + '/' + name; // <- want this to be `NS + / + N` = `NS/N`
}
// I want this to return a string literal rather than a generic string

const objKey = makeKey('admin', 'home')
// I want typeof objKey to be a string literal: `"admin/home"`, not a generic `string`


类型 objKey是通用的 string但我希望它是 string literal "admin/home"

最佳答案

TS4.1+ 答案:
您现在可以使用 template literal types去做这个:

function makeKey<NS extends string, N extends string>(namespace: NS, name: N) {
return namespace + '/' + name as `${NS}/${N}`
}

const objKey = makeKey('admin', 'home');
// const objKey: "admin/home"
Playground link

前 TS4.1 答案:
不幸的是,答案是 no . GitHub 中有几个功能建议,如果实现,可能会为您提供这样的功能( microsoft/TypeScript#12754 在映射类型期间增加键,或 microsoft/TypeScript#6579 通过正则表达式操作字符串类型),但我不认为它们是积极工作。我在 roadmap 中没有看到任何内容无论如何,关于它。如果您真的想看到这种情况发生,您可能想去其中一个 GitHub 问题并给他们一个 👍 或描述您的用例(如果它特别引人注目)。但我不会屏住呼吸。对不起!

关于javascript - 目前是否有将两个或多个字符串文字类型连接到 TypeScript 中的单个字符串文字类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334701/

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