如何在打字稿中强制变量的类型?

时间:2016-09-29 14:35:55

标签: node.js typescript

我正在尝试编写一些将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]},那么编译器就会停止抱怨

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

谢谢!

1 个答案:

答案 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')
}
相关问题