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

灵巧的

我正在尝试编写一些函数,将猫鼬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]下划线标出:

对象类型的索引签名隐式具有“ any”类型。

有没有一种方法可以“强制”打字稿为user[k]字符串?我尝试过user[k] as string还是<string> user[k]没有成功。

另外,如果我${user[k]}从返回的字符串中删除,则编译器将停止抱怨

Appart从编译器错误出发,一切都在运行时起作用。

谢谢 !

试试这个:

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')
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章