如何在打字稿中强制variables的types?

我试图写一些函数,将mongooseUser模型转换为一个带有项目符号的string:

 // Simplified version so you get the idea interface IUser { name: string } function userDetails (user: IUser, keys: string[]): string { return keys.map((k: string): string => { return `- ${k} : ${user[k]}` }) .join('\n') } 

但是我有一个奇怪的编译器错误, user[k]下划线:

对象types的索引签名隐式地具有“任何”types。

有没有办法“强制”打字机pipe理该user[k]是一个string? 我尝试user[k] as string<string> user[k]没有成功。

另外,如果我从返回的string中删除${user[k]} ,那么编译器会停止抱怨

从编译器的错误公寓,一切工作在运行时。

谢谢 !

尝试这个:

 function userDetails(user: IUser, keys: string[]): string { let dic: { [prop: string]: string } = <any>user return keys.map((k: string): string => { return `- ${k} : ${dic[k]}` }) .join('\n') }