如何提取AWS类型中未显式命名的对象属性内部接口类型?
提取@serverless/typescript中未导出的Lambda配置类型
你可以通过两种方式提取这个字符串索引对应的类型:
方法一:直接索引访问
因为functions是可选属性(带?),首先用NonNullable排除undefined和null,再通过[string]访问字符串索引对应的值类型:
type AwsLambdaConfig = NonNullable<AWS['functions']>[string];
方法二:条件类型推断(更通用)
如果需要适配不同类型的索引键,或者想让逻辑更清晰,可以用条件类型结合infer来提取索引值类型:
// 定义通用的索引值提取工具类型 type ExtractIndexValue<T> = T extends { [key: string]: infer U } ? U : never; // 提取Lambda配置类型 type AwsLambdaConfig = ExtractIndexValue<NonNullable<AWS['functions']>>;
两种方法本质都是先处理functions的可选性,再拿到索引签名对应的具体类型。前者更简洁,后者扩展性更强,比如后续如果索引键类型变化,只需调整工具类型里的索引键类型即可。
内容的提问来源于stack exchange,提问作者fraxture
相关产品推荐
相关产品推荐

