当前位置: 首页 > 知识库问答 >
问题:

对象属性的typescript接口[仅引用类型,但在此处用作值。]

金伟
2023-03-14
state = {
    x: Array<any>(),
    y: number
}

y给出了以下错误:

仅引用类型,但在此处用作值。

这是可以理解的,因为它是对象的属性。

如何使用指定类型,如xone?

共有1个答案

宗政唯
2023-03-14

问题是您试图将具有给定结构的类型分配给state。如果你想声明一个变量或字段,你需要使用

let state : {
    x: Array<any>,
    y: number
}

//Or for a field:
class Foo {
    state: {
        x: Array<any>,
        y: number
    }
}

如果你想创建这样一个对象,你需要赋值,而不是类型:

let state = { x: [], y: 0}  // empty array for x
 类似资料:
  • 我试图为我的AWS Lambda使用Typescript,我在使用promise时遇到了以下错误。 我尝试在代码中使用以下变体 我尝试了I Get中提到的解决方案:[ts]'Promise'只引用类型,但在这里被用作值,但没有运气。

  • 我使用的是Typescript 3.2。2、无法实现最基本的类型防护: 这将产生源自。是否需要配置来启用此语法?

  • 我使用TypeScript,并有一个情况下,一个函数返回两个类型的联合。它可以返回字符串或模型,但我不知道如何获取类型并根据返回的类型执行操作。 我该怎么做这样的事?在本例中,字符串和IMyModel如何用作值(如错误消息所示)?这个错误使我感到困惑。 我在使用的行中得到以下可视化工作室代码中的静态错误: “string”仅引用类型,但在此处用作值。ts(2693) “IMyModel”仅引用类型

  • 我想定义一个带有对象和不同类型的接口,例如 在定义上,没有问题,但在调用like后 这不起作用,并出现以下错误 错误错误:未捕获(promise中):TypeError:无法设置未定义的属性“名称”TypeError:无法设置未定义的属性“名称” 有一些相似的主题,但它们并不完全相关。(如何在类型脚本接口中定义对象或者如何在类型脚本中定义对象变量的类型?) 我很感激你帮助我找到解决办法。

  • 今天,我意识到让数组像字典一样运行更有意义,这样我就可以通过名称而不是数字索引访问特定元素。我希望能够执行而不是(即使我声明了一个将submitButton映射到请求的索引的枚举)。 这是可行的,但我现在允许一堆欺骗我的代码库,这是很糟糕的。我希望对象知道,只有类型的东西才能放入其中。 我可以用这些字段声明一个类,因为我希望它们的数量在将来可以动态添加,所以下面的操作是不可行的。