【问题标题】:Infer imported module default type in generic function [typescript]在泛型函数 [typescript] 中推断导入的模块默认类型
【发布时间】:2020-05-23 21:51:51
【问题描述】:

我有一个简单的模块如下:

// my-module.ts

interface IProps {
  prop1:string;
  prop2:string;
}

const someData:IProps = {
   prop1:'val1',
   prop2:'val2'
} ;

export default {
  someData:someData,
  title:'someTitle'
};

假设我无权访问IProps接口,我可以像这样访问someData类型:

import * as myModule from '../my-module.ts';

type SomeDataType = typeof myModule.default.someData;

但是,我想将myModule 传递给通用函数并使用someData 键,如下所示:

import * as myModule from '../my-module.ts';
import { getPropValue} from '../helper.ts';

var val = getPropValue(myModule, 'prop1');

还有泛型函数:

// helper.ts

export function getPropValue<T>(module:T, propKey: keyof ? ) { // T.default.someData !!!
  return module.default.someData[propKey];
};

如何访问default.someData 输入泛型函数参数以获取对象键?

【问题讨论】:

    标签: typescript generics type-inference


    【解决方案1】:

    我是如何做到的:

    // helper.ts
    type ModuleDefault = { default: { someData: {} } };
    export function getPropValue<T extends ModuleDefault>(module:T, propKey: keyof T['default']['someData'] ) {
    };
    

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2016-10-11
      • 2019-09-17
      • 2016-12-05
      • 1970-01-01
      • 2022-06-12
      相关资源
      最近更新 更多