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

如何用TypeScript泛型函数自动获取类型键并校验对象完整性?

TypeScript泛型函数自动获取类型键的实现方案

我刚接触TypeScript,想要编写一个泛型函数来获取给定类型的键,期望效果如下:

const getKeys = <T>(): string[] => { ??? }

interface A {
  a: string,
  b: number
}

getKeys<A>(); // 返回 ["a", "b"]

需求背景

实际业务中,我希望编写一个函数,接收原始对象和类型,校验该对象是否包含该类型的所有键,不想为每个类型手动传入键!期望的checkKeys函数如下:

const checkKeys = <T>(rawData: any): boolean => { ??? }

interface A {
  a: string,
  b: number
}

const wrong = {
  x: "aaa",
  y: "bbb",
};

checkKeys<A>(wrong); // 返回 false

现有实现的痛点

我目前能写出如下代码,但每次调用都要手动传入对应类型的键,非常麻烦:

const checkKeys = <T, K = keyof T>(data: any, ...keys: K[]) => {
  for (const key of keys) {
    if (!data[key]) {
      return false;
    }
  }
  return true;
}

interface A {
  a: string,
  b: number,
}

const right = { a: "a", b: "b" };
const wrong = { c: "a", b: "b" };

checkKeys<A>(right, "a", "b"); // 返回 true
checkKeys<A>(wrong, "a", "b"); // 返回 false

我知道TypeScript只是类型系统,运行时需要实际值,但既然编译时TypeScript已经知道这些键,甚至能校验传入的keys参数是否合法,能否让它在编译时为我生成keys数组?有没有我不知道的实现方式?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:45:28