首先,让我说清楚,我要查找的不是联合类型,而是直接的串联,即"Hel" + "lo" = "Hello"
字符串文字类型
本质上,我有一个函数,它接受两个字符串文字,a namespace
和a 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"
不幸的是,答案是否定的。GitHub上提出了一些功能建议,如果实施了这些建议,可能会为您提供这种功能(this或this),但是我认为它们并未得到积极的研究。无论如何,我在路线图中看不到任何东西。如果您真的想看到这种情况发生,那么您可能想转到其中一个GitHub问题,给他们一个👍或描述它的用例(如果它特别引人注目)。但是我不会屏住呼吸。抱歉!