gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:28:32 26 4
gpt4 key购买 nike

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

本质上我有一个函数,它接受两个字符串文字,一个namespace和一个name,并将它们与输出之间的/组合起来,但我可以'想出一种方法使输出成为字符串文字而不是通用字符串。

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

我试过类型交集(&)、+.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`

typeof 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/53317721/

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