typescript - 在泛型函数 [typescript] 中推断导入的模块默认类型
问题描述
我有一个简单的模块如下:
// 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
泛型函数参数中的类型以获取对象键?
解决方案
这是我如何做到的:
// helper.ts
type ModuleDefault = { default: { someData: {} } };
export function getPropValue<T extends ModuleDefault>(module:T, propKey: keyof T['default']['someData'] ) {
};
推荐阅读
- docker - 无法从 compose 运行 docker 容器
- observable - Aurelia 使可绑定行为在对象属性上可观察
- android - 运行 AVD 时的问题
- python - 由于 cffi.api.CDefError 无法使用 pyinstaller
- android - 如何在水平 RecyclerView 项目中检测从下到上的触摸
- c# - c#空数组上的“索引超出数组范围”
- ssl - 端口 6001 上的套接字 url 显示不安全
- python - Python如何在另一个程序发生某些事情时触发代码
- node.js - Node.js vm2 exchanging information between VM and main code using functions
- azure - 为 Azure Blob 存储批量更改层