我正在尝试编写一些将mongoose User
模型转换为带有项目符号的字符串的函数:
// 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]
有下划线:
对象类型的索引签名隐式具有“任何”类型。
有没有办法将“强制”打字稿给管理员user[k]
是一个字符串?
我尝试user[k] as string
或<string> user[k]
但没有成功。
另外,如果我从返回的字符串中删除${user[k]}
,那么编译器就会停止抱怨
来自编译器错误的公寓,一切都在运行时工作。
谢谢!
答案 0 :(得分:2)
试试这个:
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')
}