web-dev-qa-db-ja.com

現在、TypeScriptで2つ以上の文字列リテラル型を単一の文字列リテラル型に連結する方法はありますか?

まず、私が探しているのは共用体型ではなく、まっすぐな連結、つまり_"Hel" + "lo" = "Hello"_ですが、文字列リテラル型であることを明確にしておきます。

基本的に、namespacenameの2つの文字列リテラルを受け取り、出力時にこれらを/と組み合わせて出力する関数がありますが、作成方法がわかりません。出力は、一般的な文字列ではなく、文字列リテラルです。

出力はオブジェクトのキーとして使用されるため、文字列リテラルである必要があります。

タイプintersections(_&_)、_+_、.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"_にしたいです

10
Dudeonyx

残念ながら、答えは no です。 GitHubに提出されたいくつかの機能提案があり、実装された場合、そのような機能を提供する可能性があります( this または this )が、積極的に取り組んでいるとは思いません。とにかく、 ロードマップ には何も表示されません。これが実際に発生することを確認したい場合は、GitHubの問題の1つにアクセスして、それらに????を与えることをお勧めします。または、特に説得力がある場合は、ユースケースを説明してください。しかし、私は息を止めませんでした。ごめんなさい!

8
jcalz