Прежде всего, позвольте мне прояснить, что то, что я ищу, это не объединенный тип, а прямая конкатенация, т.е. "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"