首页 > 解决方案 > 索引对象的打字稿参考值

问题描述

我有一个接收对象参数的函数,定义如下:

interface MyObject {
  [key: string]: (SomeTypeA | SomeTypeB)[]
}

对象的签名是从 JSON Schema 动态生成的,并且将来可能包含更多属性,但它可以作为MyObject值的唯一真实来源。(SomeTypeA | SomeTypeB)[]当我有参考时,有没有办法让我参考界面的一部分MyObject

例如:像这样:

const doSomething = (withObject: valueof MyObject) => {
 // withObject is either SomeTypeA or SomeTypeB or whatever the value of properties is inside MyObject
}

标签: typescripttypescript-typings

解决方案


您可以像这样提取下面的类型:

type SomeTypeA = string;
type SomeTypeB = number;

interface MyObject {
  [key: string]: (SomeTypeA | SomeTypeB)[],
}

type ExtractType<T> = T[keyof T];

const c: ExtractType<MyObject> = [50, 'foo'];

推荐阅读