1
私は次のものを持っていますinterface
です。Typescriptのインデックスシグネチャの種類が異なる
interface IDetails {
name: string;
age: number;
}
interface IConfig {
appName: string;
userDetails: IDetails;
[key: string]: string | IDetails
}
const details: IConfig = {
appName: 'test',
userDetails: {
name: 'xyz',
age: 67,
},
}
const t: string = 'userDetails'
const name: string = details[t].name
// ^^^^
// throws the following error
//
// Property 'name' does not exist on type 'string | IDetails'.
// Property 'name' does not exist on type 'string'.
キーシグネチャに複数のタイプ/インターフェイスを割り当てようとすると、このエラーが発生します。私は[key: string]: any
を使用できることを知っています。しかし、私はそれを一般化したくありません。この作品を制作する方法はありますか?
あなたにキャストすることができますIDetails: '(詳細[t])。名前 ' –
チップをありがとう。なぜ 'string | IDetails'は動作していませんか? –
なぜあなたは '[key:string]:文字列| IDetails'?あなたがしようとしているものがなければ、うまくいくでしょう。あなたはもっと多くの物件を期待していますか? –