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

强制Typescript对象的索引成员的类型?

戚哲
2023-03-14

我希望在Typescript对象中存储String->string的映射,并强制所有键映射到字符串。例如:

var stuff = {};
stuff["a"] = "foo";   // okay
stuff["b"] = "bar";   // okay
stuff["c"] = false;   // ERROR!  bool != string

我有办法强制要求值必须是字符串(或任何类型..)吗?

共有1个答案

杭令
2023-03-14
var stuff: { [key: string]: string; } = {};
stuff['a'] = ''; // ok
stuff['a'] = 4;  // error

// ... or, if you're using this a lot and don't want to type so much ...
interface StringMap { [key: string]: string; }
var stuff2: StringMap = { };
// same as above
 类似资料:
  • 问题内容: 使用以下代码,我可以成功检索用户的地址字段,为此,我需要使用Projection定义其所有字段。想象地址有100个字段,在这种情况下,我必须定义所有字段。 我想知道是否可以仅返回客户的地址对象而不在Proposition中定义其所有字段吗? 我知道我可以检索地址的ID并使用它来检索其对象,但是我想知道是否还有其他方法而不是此方法或定义其所有字段。 hibernate 我也使用了以下内容

  • 下面是一个常见的 JavaScript 函数,实现从一个对象中选取指定属性,得到它们的属性值: function pluck(o, names) { return names.map(n => o[n]) } 实现这样一个函数的类型定义要满足: 数组参数 names 中的元素,只能是对象 o 身上有的属性。 返回类型取决于参数 o 身上属性值的类型。 我们可以通过索引类型实现这样的类型定义。

  • 我试图在打字稿中使用泛型,这样泛型参数将被用作索引来调用存储在对象中的函数。 我收到的错误是: [ts]不能调用类型缺少调用签名的表达式。类型'((变量:{插入ID:数字;})= 或 “QueryInput[T]”类型的参数不能分配给“{insertId:number;”类型的参数 下面是复制该问题的示例代码: 似乎Typescript引擎无法解析函数的正确签名-尽管肯定只有一个可能的签名(从返回

  • 问题内容: 该函数的第一行在:类上获取错误。 我遵循Django文档教程,并且它们具有相同的代码并正在运行。 我尝试调用一个实例。 也是我该类的models.py代码是… 无济于事,我仍然有这个错误。 我已经读过有关pylint的文章并进行了运行… 这没有帮助,即使github自述文件说… 防止有关Django生成的属性(例如Model.objects或Views.request)的警告。 我在我

  • 如果我有一个属性可能是字符串或布尔值,我该如何定义它: 我不想求助于: 我认为没有