推断泛型函数[typescript]中导入的模块默认类型

问题描述 投票:0回答:1

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

// 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个回答
0
投票

在这里我如何做到这一点:

// helper.ts
type ModuleDefault = { default: { someData: {} } };
export function getPropValue<T extends ModuleDefault>(module:T, propKey: keyof T['default']['someData'] ) {
};
© www.soinside.com 2019 - 2024. All rights reserved.