node.js - 如何在 typescript 中强制变量的类型?

标签 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]有下划线:

Index signature of object type implicitly has an 'any' type.

有没有办法“强制” typescript 来管理 user[k]是一个字符串? 我试过 user[k] as string<string> user[k]没有成功。

此外,如果我删除 ${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')
}

关于node.js - 如何在 typescript 中强制变量的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773246/

相关文章:

javascript - 在 Angular 中导入 Plotly.js

typescript 根据输入参数返回对象键

typescript - Angular2 @Inputs 应该公开还是我们可以/应该通过将它们设为私有(private)来拥有更严格的 API?

javascript - Node.js 如何在函数中全局使用变量?

node.js - 如何为 heroku 配置 lite-server 端口?

javascript - Mocha 测试 : Uncaught TypeError: Cannot read property 'status' of null

typescript - 谁能解释一下这个 TypeScript 语句吗?

typescript - 如何从字符串创建类型并删除子字符串?

javascript - Handlebars/Node/Express 无法加载文件

node.js - 如何使用 Node xml2js 模块转义字符?