1
Ich habe die folgenden interface
.Verschiedene Typen für Typescript Index Signatur
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'.
Wenn ich versuche, der Schlüsselsignatur mehrere Typen/Schnittstellen zuzuordnen, erhalte ich diesen Fehler. Ich weiß, dass ich [key: string]: any
verwenden kann. Aber ich möchte es nicht verallgemeinern. Gibt es einen möglichen Weg, dies zum Funktionieren zu bringen?
Können Sie gieße eine IDetails: '( Details [t]). name' –
Danke für den Tipp. Warum 'string | IDetails funktioniert nicht? –
Warum haben Sie '[key: string]: string | IDetails? ohne es würde das, was du versuchst, einfach funktionieren. Erwarten Sie mehr Eigenschaften? –