相关疑难解决方法(0)

如何使用打字稿中的查找来推断类型化的mapValues?

如同:

如何从打字稿中的动态键数组推断类型化数组?

我正在寻找一个通用对象,该对象接收任意键的映射以查找值,并返回具有键入值的相同键(如键入的 _.mapValues)。

从对象获取单一类型属性的能力已被记录并且有效。对于数组,您需要将重载硬编码为类型化元组,但对于对象,我收到“重复字符串索引签名”错误。

export interface IPerson {
    age: number;
    name: string;
}

const person: IPerson = {
    age: 1,
    name: ""
}

function getProperty<T, K extends keyof T>(o: T, name: K): T[K] {
    return o[name];
}

const a = getProperty(person, 'age');
// a: number

const n = getProperty(person, 'name');
// n: string

function getProperties<T, K extends keyof T>(obj: T, keys: { [key: string]: K }) {
    const def: { [key: string]: T[K] } = {};
    return Object.entries(keys).reduce((result, [key, …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-typings

6
推荐指数
1
解决办法
2903
查看次数

在 TypeScript 中获取双重嵌套对象的所有值类型

我的问题类似于来自 Typescript 中对象的键和值的类型,但有一个额外的嵌套层:

interface Outer {
  a: {
    b: number
  },
  c: {
    d: string
  }
}
Run Code Online (Sandbox Code Playgroud)

我只想在此处检索所有值的联合类型number | string

这是我的刺:

type Values<T extends Record<string, any>> = T[keyof T]; // From previous SO answer

type InnerValues<
  T extends Record<string, Record<string, any>>,
  K extends keyof T
> = T[K][keyof T[K]];

type All = Values<Outer>;
type In = InnerValues<Outer, keyof Outer>; // expected number|string

Run Code Online (Sandbox Code Playgroud)

但我有一个错误说Outer没有索引类型。

游乐场链接。

typescript

6
推荐指数
1
解决办法
1573
查看次数

使用对象的值创建类型

像这样的物体

const USER_EVENT = {
    pageview: 'Visit',
    order: 'Order'
}
Run Code Online (Sandbox Code Playgroud)

如果我想得到一个所有键并集的类型

type UserEventKey = 'pageview' | 'order'
Run Code Online (Sandbox Code Playgroud)

我可以做到这一点

type UserEventKey = keyof typeof USER_EVENT
Run Code Online (Sandbox Code Playgroud)

...但是是否可以通过所有值的并集来获得这种类型?

type UserEventName = 'Visit' | 'Order'


type UserEventName = ???? is it possibile?
Run Code Online (Sandbox Code Playgroud)

typescript

6
推荐指数
2
解决办法
2616
查看次数

标签 统计

typescript ×3

typescript-typings ×1