Il suffit de supprimer la déclaration explicite de data
d'être de Object
afin que TypeScript puisse déduire le type, c'est-à-dire le changer en quelque chose comme ceci
let content:Array<string> = ["I", "am", "a", "beginner"]
let data = {a: "foo", b: content}
console.log(data.a);
console.log(data['b']);
console.log(data.b);
La raison de votre erreur dans votre code initial est que vous dites au compilateur TypeScript que data
est de type Object
ou toute classe dérivée de celle-ci - comme le type Object
n'a pas de propriétés a
o b
cela entraîne une erreur.
Veuillez noter que la suppression de l'annotation de type explicite n'est pas la même chose que l'utilisation de la fonction any
comme suggéré par AD.Net car dans ce cas, TypeScript dispose toujours de toutes les informations sur les types, mais elles sont simplement déduites (voir la capture d'écran de Visual Studio Code), alors qu'en utilisant la fonction any
vous indiquez au compilateur TypeScript que la variable peut faire référence à n'importe quoi, ce qui n'entraîne aucune vérification de type.