问题标签 [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.
javascript - TypeScript 数组类型转换与 keyof 类似的方法
我正在尝试实现类似将具有指定值类型的一种数组类型克隆为具有返回指定值的函数的数组。
假设我们有如下数组元组:
我想要的是从中获取生成的类型,例如:
我尝试的是keyof
使用用法制作类型别名:
它几乎可以工作,除了它还会检查方法,Array
所以如果我要做:
它会触发我的错误,例如某些方法没有返回正确的类型
typescript - keyof 和 Lookup Types 对的联合类型
从这些类型:
我想得到这样的类型:
我如何定义 X 以便我可以做到:
typescript - keyof 返回具有索引签名的不同类型
keyof
当我有一个带有索引签名的接口时,我对如何工作感到有些困惑。
例如,如果我有一个如下界面:
我想要一个函数,它的参数只能是 的有效属性InterfaceOne
,例如:
在上面的函数中,我应该能够调用test('a')
or test('b')
,但是test('c')
应该会导致编译错误,因为c
is 不是InterfaceOne
.
当我有索引签名时,这似乎不起作用InterfaceOne
。
type myType = keyof InterfaceOne
返回string | number
。如果我删除索引签名,它会"a" | "b"
按预期返回。
有人可以解释为什么添加索引签名会改变返回的类型keyof
吗?另外,我可以强制参数是属性名称的正确方法是InterfaceOne
什么?
typescript - 制作一个泛型类型数组需要 T 的所有键
我想声明一个需要给定类型的所有键都T
包含在数组中的类型,例如:
目前,如果一个 call checkKeys<MyType>
,TS 将认为传递的值如果它包含MyType
( id | value
) 的任何键是有效的:
是否可以要求在数组中指定所有键?
typescript - 打字稿:将函数的参数约束为与特定类型的值关联的对象的键
有没有办法进行以下类型检查?
我想指定它key
不仅应该是 的键T
,而且应该是具有number
值的键。
javascript - 如何更改索引表达式的类型?即:c[k]
我的代码
IPAsset 的接口
问题出在这一行:
Typescript 期望 k 是一个数字c[k]
,而实际上它是 ILPAsset 中对象的键,在我的情况下它是字符串symbol
。
这将如何在 Typescript 中处理?
更新
顺便说一句,这是一种更简单的方法,但是对于未来有关密钥检查的问题,我得到了很好的答案:D
typescript - 强制对象字面量中的数组只能包含外部对象的键
我有以下接口定义。
我希望“子”属性只接受已定义组件的键。在“root.children”属性的情况下,它应该只接受 root、button1 和 button2:
但它也接受任意字符串,如示例“ button3 ”。
javascript - 映射对象键时使通用对象可选(在 keyof 中)
我在映射中遇到问题keyof
。我正在尝试映射Routes
类型,但是当我映射对象时,它会破坏Route
.
这里params
应该是必需的,但 TS 忽略它:
我需要Route
用routeName
and输入params
。如果params
是通用对象,则使其成为可选对象。
这是我的代码。如果您称它为IRoute
我所期望的那样工作。但是当IRoute
从映射中调用时,keyof
它会中断并且params
对于所有路由都是可选的。
这是一个TS游乐场。