Использовать импортированный тип по умолчанию для модуля в функции generi c [typescript] - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть простой модуль, как показано ниже:

// 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 функции generi c и использовать клавиши someData следующим образом:

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

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

И функцию generi c:

// helper.ts

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

Как получить доступ к default.someData type в параметре функции generi c, чтобы получить ключи объекта?

1 Ответ

0 голосов
/ 08 февраля 2020

вот как мне удается это сделать:

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