我不熟悉Type脚本,我正在try 生成一个具有以下形状的对象:

users {

  "user1" : {

    "startDate" : <timestamp1>

  }

  "user2" : {

    "startDate" : <timestamp2>

  }

} 所以我写了这样的话:

  type JSONValue =
    | string
    | number
    | boolean
    | { [x: string]: JSONValue }
    | { JSONValue }
    | Array<JSONValue>;

  let sessions: JSONValue = [];
  let obj: JSONValue = {
      this.loggedUser.getName() :
        { "startDate": new Date().getTime() }
    }

问题是代码无法编译,因为它不接受属性:this.loggedUser.getName(),如果我放入一个常量字符串,它就可以工作. 另一个问题是我不能创建JSON对象users {},我只能创建一个数组,这就是我使用PUSH的原因……

如有任何帮助,将不胜感激

推荐答案

这里的问题是,在使用对象初始值设定项语法计算(computed)属性名称时,需要使用方括号.这是一个Java脚本规范,与类型脚本无关

您应该能够执行以下操作:

let obj: JSONValue = {
    [this.loggedUser.getName()]: { "startDate": new Date().getTime() }
};

请参阅Object initializer > Computed property names上的MDN文档

Typescript相关问答推荐

React组件数组及其props 的类型定义

带有联合参数的静态大小数组

TypeScript将键传递给新对象错误

TypeScript实用程序类型—至少需要一个属性的接口,某些指定属性除外

typescribe不能使用值来索引对象类型,该对象类型满足具有该值的另一个类型'

如何将联合文字类型限制为文字类型之一

为什么TypeScript失go 了类型推断,默认为any?''

如何在Reaction Query Builder中添加其他字段?

是否可以判断某个类型是否已合并为内部类型?

使用TypeScrip5强制使用方法参数类型的实验方法修饰符

如何将TS泛型用于react-hook-form接口?

如何避免从引用<;字符串&>到引用<;字符串|未定义&>;的不安全赋值?

S,为什么我的T扩展未定义的条件在属性的上下文中不起作用?

错误TS7030:并非所有代码路径都返回值.";由tsfig.json中的";Strong";:False引起

在对象数组中设置值

什么';是并类型A|B的点,其中B是A的子类?

有没有一种简单的方法可以访问Keyboard Shortcuts JSON文件中列出的每个命令的显示名称(标题)?

我是否应该在 Next.js 中的服务器组件中获取秘密数据的所有函数中使用使用服务器?

从 npm 切换到 pnpm 后出现Typescript 错误

Typescript 编译错误:TS2339:类型string上不存在属性props