小编Dan*_*iel的帖子

具有定义值的 Typescript 动态对象键

我遇到了一个问题,试图让 typescript 为我识别 javascript 对象的键,同时强制每个键的值类型,因为我想创建一个 typeof 对象的键,所以我不能只创建一个常规的type MyObject = { [key: string]: <insert type> }.

想象一个对象myobject,我在其中提取它的键,例如:

const myobject = {
  foo: {},
  bar: {}
};

type MyObjectKeys = keyof typeof myobject; // 'foo' | 'bar'
Run Code Online (Sandbox Code Playgroud)

如何向键的值添加类型定义,同时仍然能够提取/继承键的定义?如果我做这样的事情,那么我将不再能够提取对象的确切键,而只能提取类型(字符串):

type MyObject = { [key: string]: { value: boolean }}
const myobject = {
  foo: { value: true },
  bar: { value: false }
};

type MyObjectKeys = keyof typeof myobject; // string
Run Code Online (Sandbox Code Playgroud)

我想我可以通过创建一个辅助函数来实现这一点,例如:

function enforceObjectType<T extends MyObject>(o: T) { …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics typescript-typings

5
推荐指数
1
解决办法
2140
查看次数