遍历对象的属性时,如何检查键是否可选?

When looping through an object's properties, how do I check if a key is optional?

考虑以下几点:

interface TestObject { param: string, foo?: string }
const object: TestObject = { 
   param: "hello"
   foo?: "bar"
}

上面有一个可选参数但是,假设我们没有接口,对象是 unknown

如何通过遍历给定对象的 属性 来确定键是否可选? (见下文)

const takeAnObject = (object: unknown) => {
    Object.keys(object).forEach((key: string) => {
      if(key === OPTIONAL){ 
         console.log(`${key} is an optional parameter`) 
      } else { 
         console.log(`${key} is a required parameter`) 
      }
    }
}

你不能。在运行时,没有 type 信息。 您可以做的是为您的对象创建某种模式,然后根据该模式验证它们。最受欢迎的软件包之一是 ajv