You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为`KEY extends keyof Setting`创建类型别名?

简化泛型约束KEY extends keyof Setting的写法

当然可以简化这类重复的泛型约束写法,你只需要把keyof Setting单独抽成一个类型别名,之后在泛型参数里用这个别名作为约束即可,不用像伪代码那样试图把整个泛型约束逻辑塞进别名里。

修改后的代码示例:

type Setting = {
    name: string,
    age: number,
    isVerified: boolean,
}

// 定义Setting的键类型别名
type SettingKey = keyof Setting;

// 简化SettingObject的泛型约束
type SettingObject<KEY extends SettingKey> = { [P in KEY]: Setting[P] }

// 各个函数的泛型约束同步简化
async function setValue<KEY extends SettingKey>(key: KEY, value: Setting[KEY]): Promise<void> { /* ... */ }

async function setValueArray<KEY extends SettingKey>(values: SettingObject<KEY>): Promise<void> { /* ... */ }

async function getValue<KEY extends SettingKey>(key: KEY): Promise<Setting[KEY]> { /* ... */ }

async function getValueArray<KEY extends SettingKey>(keys: KEY[]): Promise<SettingObject<KEY>> { /* ... */ }

这样修改后,所有原本写KEY extends keyof Setting的地方都能替换成KEY extends SettingKey,既保留了原本的类型校验能力,又让代码更简洁易维护。

内容的提问来源于stack exchange,提问作者Viewed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:57:09