Есть ли сейчас способ объединить два или более строковых литеральных типа в один строковый литеральный тип в TypeScript прямо сейчас? - PullRequest
0 голосов
/ 23 января 2019

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

1 Ответ

0 голосов
/ 01 августа 2019

Ответ, к сожалению, нет .В GitHub подано несколько предложений по функциям, которые, если они будут реализованы, могут предоставить вам такую ​​функциональность ( this или this ), но я не думаю, что они активно работают над этим.Во всяком случае, я не вижу ничего в дорожной карте .Если вы действительно хотите, чтобы это произошло, вы можете обратиться к одной из этих проблем GitHub и дать им ? или описать свой вариант использования, если он особенно убедителен.Но я не задерживал дыхание.Извините!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...