问题标签 [keyof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
693 浏览

typescript - 打字稿检查类型 A === 类型 B | C型

在一个文件中,我有这样的内容:

在另一个文件中,我有这样的东西:

如何使用 Typescript 断言_allALWAYS 中定义的键等于 and 的_keep并集_ignore。换句话说,AllKey应该总是等于KeepKey| IgnoreKey.

_all我希望 Typescript 编译器在开发人员通过添加新值(比如z)进行更新但忘记添加z_keepor时给我一个错误_ignore

0 投票
2 回答
1262 浏览

typescript - 如何指定 Typescript 通用 T[K] 是数字类型?

我有一个简单的 Typescript 函数,如下所示:

我的用法是这样的:

我不知道someObj将是什么结构。

我的问题是:如何T[K]静态指定数字类型?

0 投票
1 回答
584 浏览

typescript - Typescript: for (let key in obj), `key` 是 `Extract` 而不仅仅是 `keyof T`,为什么?

我想iterate超过一个object,当我使用时for-in,我注意到一个非常奇怪的事情:

我的 VSCode 截图:

在此处输入图像描述

这引出了我两个问题:

  1. 为什么key's type isExtract<keyof T, string>而不是 just keyof T
  2. Object 的key总是字符串类型,所以Extract<keyof T, string>什么都不做,对吧?
0 投票
1 回答
466 浏览

typescript - 从泛型函数的声明中获取参数 - TypeScript 3.3

我不知道如何获取在接口中声明的函数的参数类型。我需要对它们进行适当的类型检查。可能我需要使用:TypeScript 版本中的参数类:3.3:https ://github.com/Microsoft/TypeScript/blob/v3.3.1/lib/lib.es5.d .ts#L1471-L1474但我不知道如何使用它。

0 投票
5 回答
66462 浏览

typescript - TypeScript 中的“keyof typeof”是什么意思?

向我解释keyof typeofTypeScript 中的含义

例子:

最后一行相当于:

但它是如何工作的?

我希望typeof ColorsEnum返回类似的东西"Object",然后keyof "Object"不做任何有趣的事情。但我显然错了。

0 投票
1 回答
2131 浏览

typescript - 预期 3 个类型参数,但得到 1 个,但它应该推断出 2 个类型

我想知道如何正确推断我的函数的第二个和第三个模板

假设一个简单的界面

关注作品

但我需要通过指定另一种类型来概括该函数的工作(我不想传递对象实例来指定类型)

所以,以下不起作用

似乎函数的第二个和第三个模板参数不是从第一个参数推断出来的,但它应该是因为在第一种情况下,当我直接指定类型 T=ISome 时它起作用了。

我不确定是否有一些语言关键字可以使其工作,但模板应该完全适用:指定未知类型。

编辑

实际上我找到了这种方式,但需要额外的编码,如果可能的话我会避免

0 投票
1 回答
16 浏览

typescript - 强制索引中键的边界

我正在尝试使用一个将索引作为参数的函数,其中键限制为 T 的键

有没有办法做到这一点?这是正确的方法吗?

0 投票
1 回答
3605 浏览

arrays - 打字稿参数 - 对象的通用数组和对象键的数组(部分)

我想要一个接受对象数组和一些对象键数组的方法。该方法将返回对象值数组的数组,但仅返回选定键的数组。

数据:

领域:

结果:

到目前为止,我有一个提供所需结果的函数,但我不确定如何更好地处理这些类型。

我尝试了下一个片段的一些变体,但出现错误。

0 投票
1 回答
97 浏览

typescript - 约束键,使其只能引用 TItem 的数字或日期键

我正在尝试约束键,因此它只能引用 TItem 的数字或日期键。

0 投票
1 回答
1337 浏览

typescript - 列出类的私有属性名称

我需要使用类属性名称的一些子集作为映射中的值,以便在类内部使用。在以下示例中,我已将 map 替换为数组。问题是如果属性被标记private,它不会在列表中keyof列出。如果需要包含私有名称,如何指定密钥类型?

类外的变量和类内的私有属性都存在相同的错误:

类型“x”不能分配给类型“y”。