typescriptの「型 ‘string[]’ を型 ‘[string, string]’ に割り当てることはできません。」エラー
on 開発
typescriptの変数に先にtypeを設定して、それをtupleにするとエラーになる場合があります。
型 ‘string[]’ を型 ‘[string, string]’ に割り当てることはできません。
ターゲットには 2 個の要素が必要ですが、ソースに指定する数はそれより少なくても構いません。
typescriptの「型 ‘string[]’ を型 ‘[string, string]’ に割り当てることはできません。」エラー発生理由
stringListに二つのstringがあると仮定します。
その値をtupleに入れようとするとエラーになります。
const stringList = ["jin", "young"];
const tuple: [string, string] = stringList;
string[]は[string, string]の部分集合じゃないからです。
反対なら可能です。
typescriptの「型 ‘string[]’ を型 ‘[string, string]’ に割り当てることはできません。」エラー解決方法
- stringListとtuple変数のtypeを同じく設定します。
const stringList: [string, string] = ["jin", "young"]; const tuple: [string, string] = stringList;
- stringListをtypeを[string, string]に指定して、tupleのtypeをstring[]にします。
const stringList: [string, string] = ["jin", "young"]; const tuple: string[] = stringList;
typescriptはtypeの設定が厳しです。
なので、typeを設定しない時にはどういうtypeになるのか、ちゃんと認識して使いましょう。
それが難しい場合は事前にtypeを設定して使えばいいです。