TypeScript:获取动态键控对象中值的类型签名
TypeScript: Getting the type signature of values in a dynamically keyed object
我想在我从库中导入的类型对象中引用值类型,并且不受控制。
我正在使用无服务器 TypeScript 包,它提供了一个名为 AWS
的类型,如下所示:
{
...
functions?: {
[k: string]: {
name: string;
...
}
}
}
我知道可以用 AWS["functions"]
引用整个函数子对象的类型
我的问题是,如何以编程方式请求该子对象的 值 的子类型?
看下面的代码,用“TYPE_HERE”表示我要填类型的地方
import type { AWS } from "@serverless/typescript";
export default (): TYPE_HERE => ({
name: "",
...
});
当它作为动态键的值 属性 存在时,如何使用根类型甚至类型 AWS["functions"]
来声明类型?
这应该有效:
interface AWS {
functions?: {
[k: string]: {
name: string;
}
}
}
type FnType
= NonNullable<AWS["functions"]> extends { [K: string]: infer R } ? R : never
const d = (): FnType => ({
name: "",
dd: '', // error
});
我想在我从库中导入的类型对象中引用值类型,并且不受控制。
我正在使用无服务器 TypeScript 包,它提供了一个名为 AWS
的类型,如下所示:
{
...
functions?: {
[k: string]: {
name: string;
...
}
}
}
我知道可以用 AWS["functions"]
我的问题是,如何以编程方式请求该子对象的 值 的子类型?
看下面的代码,用“TYPE_HERE”表示我要填类型的地方
import type { AWS } from "@serverless/typescript";
export default (): TYPE_HERE => ({
name: "",
...
});
当它作为动态键的值 属性 存在时,如何使用根类型甚至类型 AWS["functions"]
来声明类型?
这应该有效:
interface AWS {
functions?: {
[k: string]: {
name: string;
}
}
}
type FnType
= NonNullable<AWS["functions"]> extends { [K: string]: infer R } ? R : never
const d = (): FnType => ({
name: "",
dd: '', // error
});